0

可能重复:
节点+猫鼬:获取最后插入的ID?

我正在尝试通过 mongoose 将文档插入 mongodb:

var mongoose = require('mongoose');

mongoose.connect('mongo://localhost/shuzu_test');

var conn = mongoose.connection;

var user1;

conn.collection('users').insert({a: 111}, function(err, docs){
    console.log(docs);
    user1 = docs[0];
});

var question1;
conn.collection('questions').insert({
    t:'Hello', 
    userId: user1._id /*!!!! error: user1 is undefined */
}, function(err, docs){
    question1 = docs[0];
});

请注意这一行:

/*!!!! error: user1 is undefined */

当它试图插入问题时,user1仍然没有插入,它仍然是undefined。如何更改代码以使插入同步?所以我可以确保user1在插入问题之前已经插入并且有价值?

4

1 回答 1

1

您需要将插入问题集合的代码放在从插入到用户集合的回调中。

所以像这样:

conn.collection('users').insert({a: 111}, function(err, docs){
    console.log(docs);
    user1 = docs[0];

    var question1;
    conn.collection('questions').insert({
        t:'Hello', 
        userId: user1._id /*!!!! error: user1 is undefined */
    }, function(err, docs){
        question1 = docs[0];
    });
});
于 2012-05-10T03:35:16.340 回答