首页 > 解决方案 > MongoDB User.findOne({email:email})

问题描述

findOne 返回 null 总是

我在数据库中有“user(hello@gmail.com)”数据,但 User.findOne 总是返回 null。请帮我。我有一个在后台运行的节点,但它给了我 null 。req.body给出了我通过但 findOne 不工作的电子邮件。User.create工作正常。但是像find、findById、findOne这样的搜索查询 不起作用。有人请帮助我。

const userSchema = new mongoose.Schema({
 name: {
    type: String,
    required: [true, 'A user must have a unique name'],
    unique: true,
  },
  password: {
    type: String,
    required: true,
    unique: true,
    minlength: 8,
  },
  email: {
    type: String,
    required: [true, 'A user must have a unique name'],
    unique: true,
    lowercase: true,
  }
const User = mongoose.model("User", userSchema);

exports.getTest=async (req,res)=>{
    const {email} = req.body  // returns "hello@gmail.com"
    const user = await User.findOne({email})
    console.log(user) //returns null
    res.json({
     
        status:"success",
        data:{
            user
        }
    })

}

标签: javascriptjquerynode.jsmongodbmongoose

解决方案


我感觉您的问题出在测试的前两行?

const {email} = req.body  // returns "hello@gmail.com"
const user = await User.findOne({email})

如果您req.body只是返回电子邮件字符串,那么您的查询可能不是正确的 JSON 格式?

您确定查询实际上最终User.findOne({email: "hello@gmail.com"})不是 justUser.findOne("hello@gmail.com")吗?

也不确定你exec()最后是否需要,但它确实执行查询并返回一个 Promise ...


推荐阅读