-1

私はexpress3でnode.jsを持っています。

mongodb の使用には、mongo-lazyパッケージが必要でした。

だから、私は単純なGETルーターを持っています:

var db = require('mongo-lazy').open({
    db: 'somedb',
    host: '127.0.0.1',
    port: 27017,
    user: 'someuser',
    password: 'somepassword'
});

var result={};

db.person.findAll({}, function (err, persons) {
    result.err=err; 
    result.persons=persons;
    console.log("__0: " + typeof persons);
    console.log("__1: " + typeof result.persons);
});
console.log("__2: " + typeof result.persons);

if (!result.err) res.send("test");

コンソールは次のとおりです。

Express server listening on port 3000
__2: undefined
GET /mongo 200 1508ms - 5
__0: object
__1: object

したがって、質問は次のとおりです。

  1. ノードが最初に __2 を呼び出し、__2 の後に __0、__1 を呼び出すのに、行の順序が異なるのはなぜですか?
  2. errをに入れる方法personsresult?
4

1 に答える 1

1

findAll()は非同期呼び出しであり、それに渡す関数は、関数が返されたときに実行するコールバックです。このように並べ替えて、期待される動作を取得します。

db.person.findAll({}, function (err, persons) {
    if (!err) res.send(persons);
});
于 2013-03-31T12:43:55.333 に答える