mongodb 中架构中定义的 属性 未在节点中显示 hisOwnProperty
The property defined in schema in mongodb is not showing hisOwnProperty in nodes
我的用户架构是
var mongoose = require('mongoose');
var userSchema = mongoose.Schema({
firstName : String,
lastName : String,
...
})
module.exports = mongoose.model('user', userSchema,'user');
我在用户数据库上的查找查询
User.findById(userId,function(error,user){
if(!error){
console.log(user) //correctly print user schema as described above with _id
for (var key in user) {
if (user.hasOwnProperty(key)) {
console.log("key ", key); //not print firstName, lastName
}
}
}
})
for in 循环无法正常工作,它会打印不在架构中的不同属性
那是因为返回的user
是一个mongoose
model
。它有一些其他属性构建在它的原型中。
如果你想遍历用户属性,你需要这样做:
console.log(user)
var objUser = user.toObject();
for (var key in objUser) {
if (objUser.hasOwnProperty(key)) {
console.log("key ", key);
}
}
toObject()
函数会将您的猫鼬模型变成一个纯 Javascript 对象。
但是,如果你这样做,你需要记住猫鼬模型函数不会在纯对象上工作(因为它不再是猫鼬模型)。所以如果你仍然需要使用它们,你需要保留对原始用户模型的引用。
我的用户架构是
var mongoose = require('mongoose');
var userSchema = mongoose.Schema({
firstName : String,
lastName : String,
...
})
module.exports = mongoose.model('user', userSchema,'user');
我在用户数据库上的查找查询
User.findById(userId,function(error,user){
if(!error){
console.log(user) //correctly print user schema as described above with _id
for (var key in user) {
if (user.hasOwnProperty(key)) {
console.log("key ", key); //not print firstName, lastName
}
}
}
})
for in 循环无法正常工作,它会打印不在架构中的不同属性
那是因为返回的user
是一个mongoose
model
。它有一些其他属性构建在它的原型中。
如果你想遍历用户属性,你需要这样做:
console.log(user)
var objUser = user.toObject();
for (var key in objUser) {
if (objUser.hasOwnProperty(key)) {
console.log("key ", key);
}
}
toObject()
函数会将您的猫鼬模型变成一个纯 Javascript 对象。
但是,如果你这样做,你需要记住猫鼬模型函数不会在纯对象上工作(因为它不再是猫鼬模型)。所以如果你仍然需要使用它们,你需要保留对原始用户模型的引用。