【发布时间】:2017-10-14 21:18:10
【问题描述】:
我有这段代码可以使用nested-pop 获取一些具有深层嵌套关联的股票数据:
Stock.find({limit:100, sort:'name ASC'})
.populate('scans', {limit:1,sort:'createdAt DESC'})
.then((stocks) => {
return nestedPop(stocks, {
scans: ['values']
})
}).then(stocks => {
console.log(stocks[0].scans[0]);
res.json(stocks);
})
在服务器控制台中记录扫描并打印 values 数组。但是 res.json 会返回所有扫描都缺少 values 数组的股票。
预期输出:
[{
id: 1,
scans: [
{
id: 1,
values: [
{
id: 1,
value: 0.5,
type: 1
},
...
]
}
]
}, ...]
返回的输出:
[{
id: 1,
scans: [
{
id: 1,
}
]
}, ...]
该错误似乎与对象的深度无关,因为我用一些更深的测试对象对其进行了测试,并且所有内容都返回了。我只是不明白如果 它在那里,res.json 怎么不返回它。
更新:
我现在进行了其他测试,发现.toObject 和.toJSON 在单个股票上调用都会导致值在服务器端消失。而且因为res.json 在传递的对象上调用.toJSON,所以它也不会出现在浏览器中。
【问题讨论】:
-
您是否覆盖了任何模型的
.toJSON方法?我认为这些是由res.json自动调用的。 -
不,我没有覆盖 .toJSON。
-
你不需要覆盖,尝试在对象上调用
.toObject(),然后再将其发送回用户
标签: javascript json sails.js