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
}
})
}
我感觉你的问题出在测试的前两行?
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...
文档应保存
active: true
在数据库中。但相反,我将每个文档保存为默认值 false。所以,这就是我的答案,如果将来有人觉得有用,请告诉我。保重,再见
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