2012-05-09 2 views
0

Можно создать дубликат:
Node + Mongoose: Get last inserted ID?Как включить вставку для синхронизации, в мангусте?

Я пытаюсь вставить документ в 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 и имеют значение, прежде чем вставлять вопросы?

ответ

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]; 
    }); 
});