gpt4 book ai didi

sequelize.js - Sequelize 可选的 where 子句参数?

转载 作者:行者123 更新时间:2023-12-04 11:35:22 25 4
gpt4 key购买 nike

这是一件让我非常恼火的事情!我必须为几乎相同的查询编写 2 个不同的函数!

假设我有一个 API,它返回与特定 poststypeId 关联的 cityId 。要获取与 ALL typeId 1 OR 2, OR 3 相关联的 cityId 1 帖子,我会将以下内容解析为我的 Sequelize findAll 查询:

$or: [{typeId: 1}, {typeId: 2}, {typeId: 3}]
cityId: 1

但是说我想获得所有 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
}

因此,我必须创建一个不包含 $or: types where 子句的新查询......因为如果我解析一个空的 types 数组,我会得到一个奇怪的 sql 输出:
WHERE 0 = 1 AND `post`.`cityId` = '1'

注意它是如何输出 0 = 1 的?!不知道为什么

最佳答案

您可以预先构建 where 对象。这是一个简单的例子

// Get typeIds from whatever source you have

// Here's an example
var typeIds = [1, 2, 3];

// Or you could try this to build a query without typeIds
// var typeIds = [];

var whereCondition = {};

if (typeIds.length > 0) {
whereCondition['$or'] = typeIds.map(function(id) {
return {
typeId: id
};
})
};

whereCondition['cityId'] = 1;

console.log(whereCondition);

Post.findAll(whereCondition).then(function(posts) {
// The rest of your logic
});

关于sequelize.js - Sequelize 可选的 where 子句参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com