2013-02-17 34 views
0

所以我有幾個貓鼬模式的定義。如何在回調第一個查詢時查詢另一個集合。

var partSchema = mongoose.Schema({ 
    name: String, 
    system: String, 
    team: Array, 
    quantity: Number, 
}); 
var part = mongoose.model('part', partSchema); 

var peopleSchema = mongoose.Schema({ 
    name: String, 
    pass: String, 
    role: String, 
    parts: Array 
}); 

var people = mongoose.model('people', peopleSchema); 

而我想發送基於這些模式,以及更多,基於這些用戶的查詢。因此...

app.get('/', function(req, res){ 
    people.find(function(err, persons){ 
    if (err) return handleError(err); 
    console.log(persons); 
    parts.find(function(err, things){ 
     res.render('in', { user: req.session.user, people:persons, parts:things }); 
    }); 
    }); 
}); 

爲了保持異步,我會窩這些電話,對不對?我不能嵌套這些調用,因爲「部分」不再被定義。我想知道我是否可以做到這一點,我該怎麼做?對不起,如果這是一個noob問題,但我已經看了這幾天,似乎還沒有找到一個解決方案。謝謝!

回答

0

'part'型號的變量名稱爲part,而不是parts。所以它應該是:

app.get('/', function(req, res){ 
    people.find(function(err, persons){ 
    if (err) return handleError(err); 
    console.log(persons); 
    part.find(function(err, things){ // <-- Changed on this line 
     res.render('in', {user: req.session.user, people:persons, parts:things}); 
    }); 
    }); 
}); 
+0

哇,我不能相信我沒有接受。我現在感覺很糟糕。非常感謝! – 2013-02-17 05:52:29