填充模型的条件在水线中不起作用
Where condition on populated model does not work in waterline
我在sails.js中使用水线并试图找到"User"模型的所有记录,其相关"Car"模型的id在指定列表中,如下:
var list = [3, 4, 5];
User.find().populate('car', {
where: {
id: list
}
}).exec(function(err, foundUsers){
console.log(foundUsers);
});
问题是无论列表值如何都执行查询并返回所有记录。应该如何应用这个标准?
模型定义如下:
//User:
module.exports = {
connection: 'mysqlConnection',
attributes: {
id: {
type: 'integer',
primaryKey: true,
autoIncrement: true
},
car: {
model: 'Car'
}
}
}
//Car:
module.exports = {
connection: 'mysqlConnection',
attributes: {
id: {
type: 'integer',
primaryKey: true,
autoIncrement: true
},
title: {
type: 'string'
}
}
}
我一直不明白为什么 Waterline 会这样...
但这里有一个简单的方法:
var list = [3, 4, 5];
User
.find({ car: list })
.populate('car')
.exec(function(err, foundUsers){
console.log(foundUsers);
});
编辑: 自 2017 年 1 月 31 日起,额外的填充似乎不再是强制性的。虽然没有检查它更改的版本
我在sails.js中使用水线并试图找到"User"模型的所有记录,其相关"Car"模型的id在指定列表中,如下:
var list = [3, 4, 5];
User.find().populate('car', {
where: {
id: list
}
}).exec(function(err, foundUsers){
console.log(foundUsers);
});
问题是无论列表值如何都执行查询并返回所有记录。应该如何应用这个标准?
模型定义如下:
//User:
module.exports = {
connection: 'mysqlConnection',
attributes: {
id: {
type: 'integer',
primaryKey: true,
autoIncrement: true
},
car: {
model: 'Car'
}
}
}
//Car:
module.exports = {
connection: 'mysqlConnection',
attributes: {
id: {
type: 'integer',
primaryKey: true,
autoIncrement: true
},
title: {
type: 'string'
}
}
}
我一直不明白为什么 Waterline 会这样...
但这里有一个简单的方法:
var list = [3, 4, 5];
User
.find({ car: list })
.populate('car')
.exec(function(err, foundUsers){
console.log(foundUsers);
});
编辑: 自 2017 年 1 月 31 日起,额外的填充似乎不再是强制性的。虽然没有检查它更改的版本