node.js - 如何在 sequelize 中使用非列变量

标签 node.js postgresql sequelize.js

我正在开发一个试用 Node.JS 服务器,它使用 Sequelize ORM 与 postgres 数据库进行交互。
我有一个答案表,其中一些已确认,但有些未确认(“ 确认 ”是“ 答案 ”表中的一列)。
如果普通用户请求我,我只想发送已确认的答案,否则发送所有答案;我使用我称之为 isAdmin 的查询参数识别普通用户(如果 isAdmin 是 0 那么它是一个普通用户)。
那么如何在 Sequelize 的 where 子句中使用 isAdmin 参数呢?
我最好的尝试如下:

const isAdmin = req.params.isadmin
try{
    const result = await AnswersModel.Answer.findAll({
         where:
                sequelize.or(
                sequelize.and(
                    {confirmed: true},
                    isAdmin == false
                ),
                sequelize.and(
                    1==1,
                    isAdmin == true
                )
            )
}catch(error){
...
}
我没有收到任何错误,但是 isAdmin 条件只是无效:(!
注意 :我知道我可以使用“行查询”或简单的 if(){}else{} 样式来完成,但我只是想避免它

最佳答案

不要尝试将所有条件过滤器构建逻辑包含到 where 选项中。它必须尽可能简单。

const where = {}
if (!isAdmin) {
  where.confirmed = true
}
const result = await AnswersModel.Answer.findAll({
 where
})

关于node.js - 如何在 sequelize 中使用非列变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63397377/

相关文章:

javascript - 链接 promise 创建 ec2 实例

django - 如何对名称相似的项目进行分组?

node.js - 即使我没有使用 GROUP BY,SQL Server 的 Sequelize 也会返回错误聚合函数或 GROUP BY 子句

jquery - 不正确的 Sequelize 查询

node.js - 为什么 "res.send"给我旧版本的 Mongoose 文档?

node.js - npm install 模块的权限被拒绝

node.js - Sequelize 包括创建一个嵌套对象

sql - 在 PostgreSQL 中使用 COALESCE 处理 NULL 值

regex - 在 PostgreSQL 中使用正则表达式提取字符串的一部分

javascript - 如何使用 JS、Node.JS 和 Discord.JS 在 SQLITE 数据库中获取多行?