小编pal*_*ira的帖子

续集查询的可选参数

早上好。

我对 NodeJS/sequelize 世界相当陌生,目前在尝试在屏幕上显示仪表板时遇到问题。

该仪表板具有三个过滤器:两个日期(期间)、客户姓名和员工姓名。用户可以选择无、一个、两个或所有过滤器,我的数据库需要相应地工作。

话虽这么说,我的问题是 Sequelize,因为我不知道如何处理参数不“总是”存在的问题。

我见过这个问题:

序列化可选的 where 子句参数?

但这个答案不再起作用了。我还尝试了另一种构建 where 子句的方法,但也失败了(主要是由于续集运算符)。我尝试的最后一件事是进行包含所有参数的单个查询,但尝试找到一些值(或标志),这将使sequelize忽略参数,对于参数不存在的情况*,但看起来Sequelize没有没有那样的东西。

* 我在这里读过一个问题,有一个答案说{}可以解决这个问题,但我也尝试过,但没有成功。

总之:我需要进行一个可以随着时间“改变”的查询,例如:

Foo.findAll({
  where: { 
  id : 1,
  }
});

Foo.findAll({
  where: { 
  id {
   [Op.in] : [1,2,3,4,5]
  },
  name: "palmeiira",
  }
});
Run Code Online (Sandbox Code Playgroud)

您知道一种不需要使用大量 if / switch 语句的方法吗?

我目前正在使用 Sequelize v. 5.5.1。

更新

我尝试按照@Anatoly 的建议进行操作,并创建了一个函数来构建参数。就是这样的。(我尝试了一个“较小”版本只是为了测试)

async function test() {
  const where = {};
  where[Op.and] = [];
  where[Op.eq].push({
    id: {
    [Op.in]: [1,2,3] 
    }
  });

  return where;
}
Run Code Online (Sandbox Code Playgroud)

我将返回值设置为 const:

const query = await test() …
Run Code Online (Sandbox Code Playgroud)

postgresql node.js sequelize.js

3
推荐指数
1
解决办法
3988
查看次数

标签 统计

node.js ×1

postgresql ×1

sequelize.js ×1