在sequelize中使用OR语句查询

dea*_*wap 0 javascript sql node.js sequelize.js

我有一些问题使用或声明是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: '' }));
Run Code Online (Sandbox Code Playgroud)

}

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

小智 6

根据sequelize文档

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

请试试这个:

$or: [
  {
    email: req.body.email
  },
  {
    username: req.body.username
  }
]
Run Code Online (Sandbox Code Playgroud)