设置为select:false的字段的新Model()不可用

时间:2016-08-26 22:26:15

标签: mongodb mongoose

这是我的架构:

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'的字段?

谢谢!

1 个答案:

答案 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个小时。