【问题标题】:How do I find a specific item in data array from Jade?如何在 Jade 的数据数组中找到特定项目?
【发布时间】:2016-10-30 06:29:03
【问题描述】:

不确定这是好还是坏的做法,但我已成功地将两组数据(mongodb 集合)提供给玉页面。

这些数据猫鼬模式的示例如下:

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

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

我正在为引用的人构建一个引用数据的页面。在来自quotes 集合的单引号的文档中,它具有来自persons 集合的人的ObjectId。

这是我目前所拥有的,但我被困住了:

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

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

这是我第一次在 stackoverflow 上寻求帮助,如果我遗漏了任何可以帮助你的东西,请告诉我。

【问题讨论】:

  • 请说明您如何查询 db 以获取报价。你在使用 populate Quote.find(...).populate('_person')...?
  • 我对 .populate() 函数一无所知。你一提到它,我就查了一下,它解决了我的问题。谢谢!

标签: node.js mongodb express mongoose pug


【解决方案1】:

问题在于,除了将 ObjectId 和 ref 添加到 Schema 之外,还有一个额外的步骤。正如@Molda 所指出的,您必须使用 .populate() 函数来完成这项工作。

看到评论后,我查找了 .populate() 函数,this page 很好地解释了它。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多