Sull WaterlineORM .populate()具有有限的属性

时间:2016-10-09 02:00:31

标签: sails.js waterline

当我们使用WaterlineORM .populate()查询时,我们获得填充关联的所有属性。

例如

User.find({name:'Finn'}).populate('dad').exec(function (err, usersNamedFinn){
    if (err) {
        return res.serverError(err);
    }
    return res.json(usersNamedFinn);
});

响应:

[
  {
    id: 7392,
    age: 13,
    name: 'Finn',
    createdAt: Wed Dec 25 2003 18:00:00 GMT-0600 (CST),
    updatedAt: Wed Feb 12 2016 18:06:50 GMT-0600 (CST),
    dad: {
      id: 108,
      age: 47,
      name: 'Joshua',
      createdAt: Wed Dec 25 1969 00:00:00 GMT-0600 (CST),
      updatedAt: Wed Jan 10 2015 12:00:00 GMT-0600 (CST),
      dad: null
    }
  },
]

我需要仅在回复中获取已填充的“爸爸”的姓名和身份证明。关联(即从响应中删除爸爸的其他属性)

我该怎么做?

2 个答案:

答案 0 :(得分:0)

此处的详细信息https://github.com/balderdashy/waterline/issues/919

似乎已经在v0.12.3中添加了

populate('relation', { select: ['wantedFields', ...] });

答案 1 :(得分:0)

在模型中,您可以编写一个将操纵对象的toJson()方法:

toJSON() {
  // getting the object...
  let obj = this.toObject();

  // removing some attributes...
  delete obj.createdAt;
  delete obj.updatedAt;

  return obj;
}

然后在“填充”查询结果之后进入Controller,您可以执行以下操作:

.exec(function(err, usersNamedFinn){
  if(err){
    return res.negotiate(err);
  }

  return res.json(usersNamedFinn);
});

希望这可以帮到你