[英]How to findOne in mongoDB Database
我目前正在开发我自己的 API,为此我想以一种特定的方式保存 userData,我向你展示。
{
"OzopdBz1oJSrbhCUd2Dr153DEicFA2du881a4Qr934O1FKo4rpELzAh06eQQ7v":{
"userAccountData":{
"userEmail": "myemail@mail.com",
"userPassword": "QWERTY", <--- Obvisly will be encrypted
"userCellphoneNumber": 1234567890,
"userFullName": "John White",
"userBirthDate": "01-16-2003"
},
"userPublicData":{
"userDisplayName": "JW",
"userProfilePhotoURL": "https:www..."
}
}
}
我的用户架构是下一个
const mongoose = require('mongoose')
const userSchema = mongoose.Schema({
userAccountData:{
userEmail: String,
userPassword: String,
userCellphoneNumber: Number,
userFullName: String,
userBirthDate: String,
userRoles: [{
type: mongoose.Schema.Types.ObjectId,
ref: "schemaRole"
}]
},
userPublicData:{
userDisplayName: String,
userProfilePhotoURL: String
}
})
module.exports = mongoose.model('User', userSchema)
如您所见,userEmail 位于 userAccountData 内,而我验证电子邮件是否已在数据库中的过程是下一个
async function checkForDuplicatedEmail (req,res) {
const userEmail = req.body.userEmail
if(!userEmail) return res.json({
status: 200,
message: 'email not provided',
data: {}
})
const isEmailDuplicated = await user.findOne({userEmail: userEmail})
if(isEmailDuplicated) return res.json({
status: 200,
message: "true",
data: {}
})
res.json({
status: 200,
message: "false",
data: {}
})
}
所以问题在于,当我发送请求时,响应总是正确的,即使电子邮件不在数据库中,我是否做错了什么? 你能帮我吗?
这是我解决问题的方法
userSchema
是错误的,大多数是这样的
const userAccountDataSchema = mongoose.Schema({
userEmail:String,
userPassword: String,
userCellphoneNumber: Number,
userFullName: String,
userBirthDate: String
})
const userPublicDataSchema = mongoose.Schema({
userDisplayName: String,
userProfilePhotoURL: String
})
const userSchema = mongoose.Schema({
userAccountData:userAccountDataSchema,
userPublicData:userPublicDataSchema
})
那么, findOne
必须是这样的:
const isEmailDuplicated = await user.findOne({
'userAccountData.userEmail': userEmail
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.