MongoDB User.findOne({email:email})

问题描述 投票:0回答:3

findOne 总是返回 null

我的数据库中有“user([email protected])”数据,但 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 "[email protected]"
    const user = await User.findOne({email})
    console.log(user) //returns null
    res.json({
     
        status:"success",
        data:{
            user
        }
    })

}
javascript jquery node.js mongodb mongoose
3个回答
0
投票

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

const {email} = req.body  // returns "[email protected]"
const user = await User.findOne({email})

如果您的

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

您确定查询实际上最终是

User.findOne({email: "[email protected]"})
而不是只是
User.findOne("[email protected]")

也不确定最后是否需要

exec()
但它确实执行查询并返回Promise...


0
投票

文档应保存

active: true
在数据库中。但相反,我将每个文档保存为默认值 false。所以,这就是我的答案,如果将来有人觉得有用,请告诉我。保重,再见


0
投票
const {email} = req.body  // returns "[email protected]"
const user = await User.findOne({email})
// Try writing it like this.
const userEmail = req.body  // returns "[email protected]"
const user = await User.findOne({email:userEmail})
//consdering there is a email column named email in db
© www.soinside.com 2019 - 2024. All rights reserved.