微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在序列化中使用非列变量

如何解决如何在序列化中使用非列变量

我正在开发一个试用的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
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。