Sails.js Sails WaterlineORM.populate()具有有限的属性

Sails.js Sails WaterlineORM.populate()具有有限的属性,sails.js,waterline,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,

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

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的其他属性)


我该怎么做?

这里有详细信息

似乎已添加到v0.12.3中

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

这里有详细信息

似乎已添加到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;
}
然后进入控制器后“填充”查询结果,您可以执行以下操作:

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

  return res.json(usersNamedFinn);
});

希望这能帮助您

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

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

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

  return obj;
}
然后进入控制器后“填充”查询结果,您可以执行以下操作:

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

  return res.json(usersNamedFinn);
});

希望这可以帮助您

我使用v0.12.4,但当我使用
populate('dad',{select:['name','id']})时,它仍然填充所有字段我有v0.12.4,我尝试了这个
填充('dad',{select:['id','name']})但没有任何区别。仍然填充着所有的字段。@ShanikaEdiriweera我听到了,但是我建议的解决方案应该根据sails团队的工作。你应该在他们的github页面上提交一个bug/问题。我做了一些测试。它目前仅适用于一对多关系的总体。我提出了一个拉取请求来解决一对一关系问题:我使用v0.12.4,但当我使用
populate('dad',{select:['name','id']})时,它仍然填充所有字段我有v0.12.4,我尝试了这个
填充('dad',{select:['id','name']})但没有任何区别。仍然填充着所有的字段。@ShanikaEdiriweera我听到了,但是我建议的解决方案应该根据sails团队的工作。你应该在他们的github页面上提交一个bug/问题。我做了一些测试。它目前仅适用于一对多关系的总体。我提出了一个请求来解决一对一关系问题: