Sails.js一对多关联

时间:2015-04-20 13:15:08

标签: node.js sails.js waterline

使用Sails.js文档页面上给出的示例,我收到以下错误:"最大调用堆栈大小超出错误"。

items.find().populate("user", {name:givenName}).exec(function(err, response) {
  console.log(response);
}

问题在于,当我查看wireshark时,对数据库的查询会尝试查找每个用户(并且数据库很大),但它没有进行任何连接。

items
+-----------+--------------+------+-----+
| Field     | Type         | Null | Key |
+-----------+--------------+------+-----+
| id        | int(6)       | NO   | PRI | 
| name      | varchar(255) | NO   |     |
+-----------+--------------+------+-----+
user
+-----------+--------------+------+-----+
| Field     | Type         | Null | Key |
+-----------+--------------+------+-----+
| id        | int(6)       | NO   | PRI | 
| name      | varchar(255) | NO   |     |
| item_id   | int(11)      | YES  | MUL | 
+-----------+--------------+------+-----+

2 个答案:

答案 0 :(得分:2)

应该如此简单:

items
    .find()
    .populate("user")
    .where({name: givenName}) //or .where({user: {name: givenName}})
    .exec(function(err, response) {
        console.log(response);
    });

答案 1 :(得分:-1)

好的,如果你说你只想要特定用户的项目,请执行以下操作:

user.findOneByName(givenName).exec(function(err, user) {
    items.find().where({user : user.id}).exec(function(err, response) {
      console.log(response);
    });
});