如何在Jade的数据数组中找到特定项?

时间:2016-06-28 05:16:02

标签: node.js mongodb express mongoose pug

不确定这是好/坏做法,但我已成功将两组数据(mongodb集合)服务到玉页。

这些数据的例子mongoose Schemas如下:

...
var personSchema = new Schema({
firstName: String,
lastName: String,
email: String,
city: String,
state: String,
zip: Number
});
module.exports = mongoose.model('person', personSchema);

...
var personQuoteSchema = new Schema({
_person : {
    type: Schema.ObjectId,
    ref: 'person'
},
quote: Number
});
module.exports = mongoose.model('quote', personQuoteSchema);

我已经成功地为玉器提供了两个系列,它们工作正常。但现在我对如何做我想做的事感到困惑:

我正在为报价构建一个页面,该报价为报价所针对的人提取数据。在来自引号集合的单引号的文档中,它具有来自人员集合的人的ObjectId。

这是我到目前为止所做的,但我被困住了:

each quote in quotes
ul
    li #{quote.quote}
    li #{quote._person.firstName} #{quote._person.lastName}

因为它不起作用。我需要找到一种方法来进入报价文档中引用的人员文档并获取firstName和lastName。

这是我第一次在stackoverflow上寻求帮助,如果我错过任何可以帮助你帮助我的信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

问题是除了将ObjectId和ref添加到Schema之外还有一个额外的步骤。正如@Molda所指出的,你必须使用.populate()函数才能使它工作。

一旦我看到评论,我就会查找.populate()函数,而this page可以很好地解释它。

因此,当我拨打电话时,它必须看起来像:

quote.find({}).populate({
   path: '_person',
   model: 'person'
   }).exec(callback);