【发布时间】: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