这是让我烦恼的一件事!我必须为几乎相同的查询编写2个不同的函数!
假设我有一个返回的API posts与特定的typeId和cityId.为了获得ALL了关联到职位typeId 1 OR 2, OR 3 和 cityId 1我会解析以下我sequelize findAll查询:
$or: [{typeId: 1}, {typeId: 2}, {typeId: 3}]
cityId: 1
Run Code Online (Sandbox Code Playgroud)
但是说我希望得到所有帖子,cityId = 1 andOr typeId = 1,2,3,4,5,6,7,8,9,10,etc...我不能做以下事情:
var types = [{typeId: 1}, {typeId: 2}, {typeId: 3}]
Post.findAll({
where: {
if (types != []) $or: types,
cityId: 1
}
Run Code Online (Sandbox Code Playgroud)
所以我必须创建一个不包含$or: typeswhere子句的新查询...因为如果我解析一个空types数组,我得到一个奇怪的sql输出:
WHERE 0 = 1 AND `post`.`cityId` = '1'
Run Code Online (Sandbox Code Playgroud)
注意它是如何输出0 = 1的?不知道为什么
sequelize.js ×1