下面是基本的用户个人资料架构
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userprofileSchema = new Schema({
name:{type:String},
userId: { type: Number, required: true },
userName: { type: String, require: true },
avatarUrl: {type:String , default:'https://i.stack.imgur.com/dH5Lm.jpg'},
bio:{type:String},
url: String
})
module.exports = mongoose.model("userprofile",userprofileSchema);
下面是存储在mongodb中的文档:
{
"avatarUrl": "avatarurl",
"_id": "5edd2dfc7c213e044cc2783b",
"userId": "1000",
"name": "Sandeep Patel",
"userName": "cs-dev",
"url": "portfolioUrl",
"bio": "Work in progress!"
}
现在,当我执行userPofile.findOne({userName:"value"}}
时,它会给我结果,但是如果我在数字字段中执行相同的操作,即userPofile.findOne({userId:value}}
的结果为null。
我检查了很多次。我会错过什么吗?
猫鼬版本:5.9.18
mongod版本:3.6.12(MMAPv1)
答案 0 :(得分:1)
我刚刚尝试在我的node.js应用程序上重现同样的问题,但是findOne也可以在数字字段上使用。
从粘贴到问题中的mongoDB文档中,您的Number字段似乎存储为字符串。
应该是这样的:
{
"avatarUrl": "avatarurl",
"_id": "5edd2dfc7c213e044cc2783b",
"userId": 1000, (Notice the lack of double quotes here)
"name": "Sandeep Patel",
"userName": "cs-dev",
"url": "portfolioUrl",
"bio": "Work in progress!"
}
之后,
userPofile.findOne({userId:1000}}
有效
因此,您可能需要在插入数据库时对变量进行类型转换。