WaterlineORM .populate()带有有限的属性



当我们使用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
    }
  },
]

我需要在响应中只获取已填充的'dad'关联的名称和id (即从响应中删除dad的其他属性)

我该怎么做?

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

似乎是在v0.12.3中添加的

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

在你的模型中,你可以写一个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);
});

希望对你有帮助

最新更新