如何在第一个查询的回调上查询另一个集合。

时间:2013-02-17 04:48:42

标签: node.js mongodb mongoose

所以我定义了一些mongoose模式。

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

要保持异步,我必须嵌套这些调用,对吧?我不能嵌套这些调用,因为不再定义“部分”。我想知道我是否可以这样做,我该怎么做?对不起,如果这是一个菜鸟问题,但我已经看了好几天,似乎没有找到解决方案。谢谢!

1 个答案:

答案 0 :(得分: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});
     });
   });
});