使用toJSON / toObject剥离属性

时间:2017-05-18 17:55:19

标签: javascript sails.js waterline

我有类似下面的代码:

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 });
             });
    });

当我在客户端查看响应时,我看不到宠物内的玩具阵列。

我想也许这可能是由于覆盖了toJSON模型中的User函数,但即使删除它我也会得到相同的行为。

另外,我发现如果我将值分配给未在模型中定义的新属性,我会在客户端看到值。即如果我做

user.petsNew = petsWithToys;

我会看到人口稠密的财产。

我已经看到了toObject的文档,其中说它删除了实例方法(here)但是我不确定为什么该集合被认为是一种方法而且不明白如何在更改之后价值仍然被删除。

任何评论/解释/解决方法?

P.S。试图单步执行代码,但无法进入toObject ...

1 个答案:

答案 0 :(得分:1)

user = user.toJSON();

之前添加user.pets = petsWithToys;

检查https://stackoverflow.com/a/43500017/1435132