使用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 |
+-----------+--------------+------+-----+
答案 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);
});
});