toJSON/toObject 的剥离属性
Stripped Attributes with toJSON/toObject
我有类似下面的代码:
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),但我不确定为什么集合被视为一种方法并且不明白之后如何更改它仍然被删除的值。
任何 comments/explanations/workarounds?
P.S。尝试单步执行代码但无法单步执行 toObject
...
在user.pets = petsWithToys;
之前添加user = user.toJSON();
勾选
我有类似下面的代码:
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),但我不确定为什么集合被视为一种方法并且不明白之后如何更改它仍然被删除的值。
任何 comments/explanations/workarounds?
P.S。尝试单步执行代码但无法单步执行 toObject
...
在user.pets = petsWithToys;
之前添加user = user.toJSON();
勾选