【问题标题】:How to retrieve specific data in a mongoose schema [duplicate]如何在猫鼬模式中检索特定数据[重复]
【发布时间】:2019-11-04 07:01:54
【问题描述】:

我试图从 mongo db 集合中提取特定数据。我正在通过特定 ID 查找发票,然后我想从该发票中提取特定数据(invoiceDetails、invoiceCost 等)。我一直在尝试使用未定义的对象。

我正在使用find() 按 id 获取发票,然后我试图获取发票中的特定属性:

router.get('/searchbar/:id', checkAuth, (req, res) => {
  let userId = req.params.id
  Invoice.find({'user': userId})
    .then(invoice => {
        res.status(200).json({
          userDetails: invoice.userDetails,
          invoiceCost: invoice.Cost
        })         
    });   
});

为什么 userDetails 和 invoiceCost 都返回 undefined?

【问题讨论】:

  • 您可以将您的发票型号代码添加到问题中吗?
  • 因为 find() 返回一个 array 而不是单个对象。即var invoice = [{ userdetails: "A" }] 意味着console.log(invoice.userdetails) 将是undefined。但是,使用 console.log(invoice[0].userdetails) 会返回该值。真正的意义在于你没想到会有一个 array,所以改用 findOne(),它实际上只会返回你所期望的单个对象,而不是一个数组。

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

尝试将Invoice.find({'user': userId}) 更改为Invoice.find({'user': userId}, 'userDetails Cost'),如Mongoose Docs > Model.find() 中所述

【讨论】:

    猜你喜欢
    • 2017-11-20
    • 2016-07-15
    • 2018-10-09
    • 2022-10-07
    • 2020-02-21
    • 2021-05-31
    • 2019-02-22
    • 2015-07-29
    • 2015-09-07
    相关资源
    最近更新 更多