0

私は Node.js を初めて使用し、MongoDb ドライバーを使用しています。Node.js のワークフローがイベント駆動型であり、すべてが非同期で実行されることは理解していますが、次のようなことを行う方法がわかりません。

var mongo = require('mongodb');
var db = new mongo.Db('meta', new mongo.Server('localhost', 27017, { auto_reconnect: true }));

db.open(function(error, db){
  if(error){
    throw error;
  }

  db.collection('logs', function(error, collection){
    if(!collection){
      db.createCollection('logs', callback); // How does this callback works? I mean, how can we continue the previous execution of the script?
    }

    // Have fun.
  });
});

したがって、上記のスクリプトを使用して、次のことを行います。

  1. 接続を開く
  2. ログ収集を確認し、作成されていない場合は続行...
  3. ユーザーを作成しますか? 仕事する?

私はまだ非同期モデルに慣れています。すでに助けてくれてありがとう。

4

1 に答える 1

1

この種のシナリオで私が通常行うことは、名前付きコールバックで継続をラップすることです。

if (!collection) {
    db.createCollection('logs', next);
} else {
    next(null, collection);
}

function next(err, collection) {
    // do something
}

そうは言っても、このcreateCollectionメソッドはコレクション オブジェクトも返し、まだ存在しない場合にのみ作成します。あなたはただ書くことができます:

db.createCollection('logs', function(err, collection) {
    // do something
});
于 2012-08-03T15:56:30.797 に答える