我有一个Stock对象数组,并尝试将n个Report对象附加到每个Stock对象:
router.get('/stocks', function (req, res, next) {
Stock.find({}, function (err, stocks) {
if (err) {
next(err)
return
}
async.map(stocks, function (stock, callback) {
Report.find({ 'isin': stock.isin }).sort('-created').limit(10).exec(function (err, reports) {
if (err) {
next(err)
return
}
stock.reports = reports
return callback(null, stock)
})
}, function (err, stocks) {
if (err) {
next(err)
return
}
res.json(stocks)
})
})
})
我得到的是股票对象列表没有报告......我想要的是相同的股票,但设置了额外的属性reports
。
最有趣的是,console.log(stock)
在作业stock.reports = reports
之前和之后是相同的,但console.log(stock.reports)
提供了实际的报告对象数组......
答案 0 :(得分:1)
我在this other Stackoverflow topic找到了解决方案。解决方案如下:
因为mongoose忽略了架构中不存在的字段......
因为报告对象不在我的库存模型中,所以mongoose忽略了它...解决方案是将它添加到mongoose:
const StockSchema = new mongoose.Schema({
...
reports: {
type: mongoose.Schema.Types.Mixed
},
...
})
答案 1 :(得分:0)
盲目拍摄:有时是"点。符号"如果属性不存在则失败。你可以尝试:
stock['reports'] = reports
而不是
stock.reports = reports