如果 $notIn 的值为空数组,Sequelize 不会 return 任何内容,但如果数组包含空值,它会 return 告诉我
Sequelize doesn't return anything if value for $notIn is an empty array but it returns me if array contains an empty value
我希望 Sequelize return 给我所有 ID 不在数组中的值。
如果 $notIn 的值是一个空数组,Sequelize 不会 return 任何东西,但如果数组包含一个空值,它 return 会告诉我。
这return对我来说没什么:
db.foo.findAll({
where: {
id: {
$notIn: []
}
}
});
这 return 是我的每一个值:
db.foo.findAll({
where: {
id: {
$notIn: ['']
}
}
});
如果数组为空,为什么不 return 所有值?如果它为空,则意味着所有不在该数组中的值都应该被 returned。由于ID不包含任何值,sequelize应该return给我所有的值,对吧?
此问题将在 Sequelize 版本 4 中修复。不过该版本尚未完全公开。至少现在还没有文档。
在 https://github.com/sequelize/sequelize/issues/4859 查看 GitHub 问题。
可以在 https://github.com/sequelize/sequelize/blob/master/changelog.md 找到更新日志。它说
[FIXED] $notIn: [] is now converted to NOT IN (NULL) #4859
也许您可以自己在当前代码中实现那些版本 4 的更改。
对于那些使用 < 4 版本的人,这是我使用的解决方法,
let idsToSkip = [...]; //generate array of ids, this may result in empty array
idsToSkip.push('-1'); // push a value that can not be the id in table. this will generate `not in ('-1')` query serving the purpose.
db.foo.findAll({
where: {
id: {
$notIn: idsToSkip
}
}
});
希望对您有所帮助!!
我希望 Sequelize return 给我所有 ID 不在数组中的值。
如果 $notIn 的值是一个空数组,Sequelize 不会 return 任何东西,但如果数组包含一个空值,它 return 会告诉我。
这return对我来说没什么:
db.foo.findAll({
where: {
id: {
$notIn: []
}
}
});
这 return 是我的每一个值:
db.foo.findAll({
where: {
id: {
$notIn: ['']
}
}
});
如果数组为空,为什么不 return 所有值?如果它为空,则意味着所有不在该数组中的值都应该被 returned。由于ID不包含任何值,sequelize应该return给我所有的值,对吧?
此问题将在 Sequelize 版本 4 中修复。不过该版本尚未完全公开。至少现在还没有文档。
在 https://github.com/sequelize/sequelize/issues/4859 查看 GitHub 问题。
可以在 https://github.com/sequelize/sequelize/blob/master/changelog.md 找到更新日志。它说
[FIXED] $notIn: [] is now converted to NOT IN (NULL) #4859
也许您可以自己在当前代码中实现那些版本 4 的更改。
对于那些使用 < 4 版本的人,这是我使用的解决方法,
let idsToSkip = [...]; //generate array of ids, this may result in empty array
idsToSkip.push('-1'); // push a value that can not be the id in table. this will generate `not in ('-1')` query serving the purpose.
db.foo.findAll({
where: {
id: {
$notIn: idsToSkip
}
}
});
希望对您有所帮助!!