节点,猫鼬-$ or运算符未按预期运行

时间:2020-06-06 22:55:14

标签: javascript node.js mongodb express mongoose

在我的快速应用中,我有一个猫鼬模式,如下所示:

用户模型架构:

const userSchema = new mongoose.Schema({
    username: {
      type: String,
      required: true,
      unique: true,
      minlength: 4,
      maxlength: 50
    },
    email: {
      type: String,
      required: true,
      minlength: 3,
      maxlength: 255,
      unique: true
    },
    password: {
      type: String,
      required: true,
      minlength: 6,
    },
})

这是我在一个端点中执行的一项操作。如果req.body.usernameOrEmailusername的{​​{1}}或email相匹配,我希望可以返回用户。操作如下:

User

发生的事情是,如果我放任何东西let user = await User.find({ $or: [ { username: req.body.usernameOrEmail }, { email: req.body.usernameOrEmail } ] }) if (!user) return res.send('No user found') ,则会{strong>未打印出预期的req.body.usernameOrEmail消息。有人知道上面执行的操作出了什么问题吗?谢谢。

1 个答案:

答案 0 :(得分:3)

等待的.find()方法返回一个空数组,该数组在JavaScript中为 truthy ,请尝试:

console.log(![])

您可以改用.findOne(),在这种情况下,null将在没有匹配项且条件适用的情况下返回