javascript - 在sequelize where查询中使用OR语句

标签 javascript sql node.js sequelize.js

我在使用 or 语句是 Sequelize 时遇到一些问题。 下面是我能够想出的代码:

UserExist(req, res) {
const field = req.body.username || req.body.email;
const getFieldName = field === req.body.username ? 'username' : 'email';
return User
  .findOne({ where: {
    $or: [
      {
        email: req.body.email,
        username: req.body.username
      }
    ]
  }
  })
  .then((user) => {
    if (user) {
      res.status(200).send({ message: `${getFieldName} already exist` });
    }
  })
  .catch(() => res.status(404).send({ message: '' }));

}

它不执行 OR 语句,而是只从 Users 中选择 *

最佳答案

根据sequelize documentation

您应该给出不同的 where 条件作为 $or 数组的不同元素

请尝试这个:

$or: [
  {
    email: req.body.email
  },
  {
    username: req.body.username
  }
]

关于javascript - 在sequelize where查询中使用OR语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45945365/

相关文章:

javascript - Jquery for 循环生成的引导面板折叠不起作用

PHP、JQuery ajax 不工作

php - WooCommerce 序列化 wp_postmeta 表中的元值数组

sql - SQL触发器存储过程编译错误

node.js - node-oracledb - 使用关联数组进行批量插入

javascript - 关于 map 物种文件(和目的)的困惑

对象克隆和 eval() 的 JavaScript 问题

javascript - 简单模态不会关闭 | IE8 错误 |窗口位置.href

JavaScript 代码在 Safari 中给出空白页面

mysql - 根据隶属于组选择用户 ID