【问题标题】:access nested fields in mongoose访问 mongoose 中的嵌套字段
【发布时间】:2020-07-03 15:43:12
【问题描述】:

我定义了两种模式,一种是用户,一种是文档。 在文档架构中,我使用 createdBy 字段来引用用户架构

现在当我想在文档模式中显示所有记录时,我无法访问名称

我可以访问 doc.education 或 doc.bio 但无法访问特定的文档名称

这是我尝试过的

  doc
    .find({})
    .populate({ path: "createdBy" })
    .exec((err, docs) => {
      if (!err) {
        console.log(docs);
      }
    });

我得到了这个结果

[
  {
    _id: 5efa9ab935f13d39b01f36e2,
    createdBy: {
      role: 'doctor',
      isVerified: false,
      _id: 5ef873fe544ef53874eaacfe,
      name: 'drsmira',
      email: 'drsmira@gmail.com',
      password: '$2a$10$X/52qRFCYA/DwZ6Z1ZftVu2gv.MJ4HsqXrRuB8.ZLbqj.4EVtVmBG',
      select: 'Female',
      date: 2020-12-31T00:00:00.000Z,
      phone: '342343',
      city: 'dff',
      state: 'dfss',
      specifications: [],
      __v: 0
    },
    bio: 'wweqeqwe',
    speciality: 'dentist',
    education: 'mbbs',
    treatment: 'oral care',
    location: 'ewrewre',
    hospitalList: 'sahyadri',
    awards: 'ererewrwe',
    fee: '888',
    __v: 0,
    achievements: ''
  }
]

现在我想访问名称字段。我该怎么做

我尝试过实施

console.log(docs.createdBy.name)

但返回未定义

【问题讨论】:

  • docs 是 array,因此您需要迭代数组或 console.log(docs[0].createdBy.name) 以获取数组中的第一个元素
  • 仍然显示----无法读取未定义的属性“名称”

标签: node.js mongodb express mongoose


【解决方案1】:

所以我做了一点挖掘,感谢毗湿奴的评论

我用forEach循环得到结果

以下是更新后的代码

doc
    .find({})
    .populate({ path: "createdBy" })
    .exec((err, docs) => {
      if (!err) {
        docs.forEach((el) => {
          console.log(el.createdBy.name);
        });
        res.render("doctors", { list: docs });
      }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2016-01-20
    • 2021-09-15
    • 2017-07-05
    • 2020-10-26
    • 2016-09-08
    • 2021-11-26
    相关资源
    最近更新 更多