Node.js sequelize嵌入有许多ID

Node.js sequelize嵌入有许多ID,node.js,ember.js,ember-data,sequelize.js,Node.js,Ember.js,Ember Data,Sequelize.js,我正在试验使用Ember数据的Ember应用程序和使用Sequelize.js从MySQL提供数据的node.js后端 我的问题是: 如果我有一个通过hasMany与Post模型关联的注释模型,那么预期的JSON by ember数据如下所示 { "post": { "comment_ids": [1, 2, 3] } } 使用sequelize查询/生成此JSON而不需要昂贵的循环等的最佳方法是什么 评论模型有一个带有post_id的外键。我建议将责任推给客户端。您可以设置自

我正在试验使用Ember数据的Ember应用程序和使用Sequelize.js从MySQL提供数据的node.js后端

我的问题是: 如果我有一个通过hasMany与Post模型关联的注释模型,那么预期的JSON by ember数据如下所示

{
  "post": {
    "comment_ids": [1, 2, 3]
  }
}
使用sequelize查询/生成此JSON而不需要昂贵的循环等的最佳方法是什么


评论模型有一个带有post_id的外键。

我建议将责任推给客户端。您可以设置自定义序列化程序客户端,将数据重新格式化为ED的预期格式。此外,ED希望数据采用以下格式:

{
   "post": {
     "comments": [1, 2, 3]
   }
}

App.Post = DS.Model.extend({
   comments = DS.hasMany('comment')
});
或者,如果您选择在响应中包含注释

{
 "post": {
   "id": 1
   "title": "Rails is omakase",
   "comments": ["1", "2"],
   "_links": {
      "user": "/people/dhh"
   },
 },

 "comments": [{
   "id": "1",
   "body": "Rails is unagi"
  }, {
   "id": "2",
   "body": "Omakase O_o"
  }]
}
您可以在此处阅读更多信息:


在某个时刻,有人将不得不循环(或迭代),迭代结果集以建立响应(或序列化响应客户端)并不是一种罕见的做法。

我将它实现为:

// include comments
Post.all({
  where: "..",
  include: [Comment]
}).success(function(posts) {
  // collect IDs
  _.each(posts, function(element) {
    element["comments"] = _.pluck(element.comments, 'id');
  });
});

谢谢你的回答。我所寻找的是一种很好的方式,利用sequelize进行某种形式的加入,以添加到评论IDS中艺术家来自何处?@freakTheMighty edited-应该是传递给回调的帖子