这是我的架构:
var userScheme = mongoose.Schema({
aField:String,
info: {
type:{
local: {
email:String
}
},
select:false
}
});
当我尝试创建一个新用户时,这很好用:
var newUser = new User()
newUser.aField="Something"
newUser.save()
但是当我尝试访问select:false的字段时,我无法访问数据。所以这不起作用:
var newUser = new User()
newUser.aField="something"
newUser.info.local.email="email@domain.com"
newUser.save()
我得到的错误是:
TypeError: Cannot read property 'local' of undefined
我的猜测是,返回的新模型没有信息字段,因为它被设置为选择:false。
如何让新的Model()返回所有字段,包括那些设置为'select:false'的字段?
谢谢!
答案 0 :(得分:0)
原来选择:false与它无关。
罪魁祸首是信息在默认情况下没有值,并且根本没有包含在模型中。
解决方案是为信息创建一个新模式,并将其包含在用户模式中,如下所示:
var userScheme = mongoose.Schema({
aField:String,
info: {
type:infoSchema,
default:infoSchema, //Without this, the new document will still not include an 'info' document,
select:false
}
});
希望这有助于任何人。这只是我生命中的3个小时。