【发布时间】:2017-10-18 16:25:44
【问题描述】:
我有类似下面的代码:
User.findOne(id)
.exec((err, user) => {
Pets.find(_.pluck(user.pets, 'id'))
.populate("toys")
.exec((err, petsWithToys) => {
user.pets = petsWithToys;
return res.ok({ user: user });
});
});
当我查看客户端的响应时,我没有看到宠物内部的玩具数组。
我认为这可能是由于在我的 User 模型中覆盖了 toJSON 函数,但即使删除它,我也会得到相同的行为。
另外,我发现如果我将值分配给模型中未定义的新属性,我确实会在客户端看到这些值。 IE。如果我这样做了
user.petsNew = petsWithToys;
我会看到完全填充的属性。
我看过 toObject 的文档,其中说它删除了实例方法 (here),但我不确定为什么该集合被视为一种方法,也不明白在更改值后它仍然是如何删除。
任何 cmets/解释/解决方法?
附:尝试单步执行代码但无法单步执行toObject...
【问题讨论】:
-
当您在
user.pets = petsWithToys;行设置断点并检查user时,是否有toys? -
您使用的是什么版本的 Lodash?因为 v.4
_.pluck被删除以支持_.map。见this link -
@T.J.Crowder - 是的,有 - 它只在 toJSON/toObject 调用中被删除。似乎下面答案中的建议可行(需要测试)。
-
@ZuzuSoftman - 我使用的是 3.10.x,它与sails.js 捆绑在一起 - 不过感谢您的提示 - 我会调查一下。
标签: javascript sails.js waterline