mongoose子文档检索为String而不是object

时间:2017-04-18 03:34:12

标签: javascript node.js mongodb mongoose

所以,我有以下对象

var Sub = {
  name: String,
};

var UserSchema = new mongoose.Schema({
  name: String,
  sub: Sub
});

module.exports = mongoose.model('User', UserSchema);

在数据库中,我有以下内容:

  

db.users.find({})相当();   {       “_id”:ObjectId(“xyz”),       “名字”:“约翰”,       “sub”:{           “名称”:“子名称”       }   }

现在,当我查询名为“John”的用户时,“sub”子文档将被检索为字符串

typeof user.sub ==='string'

要执行查询,我使用的是User.findById方法

User.findById("xyz", function(err, user){
  console.log(typeof user.sub);
})

有什么线索在这里发生了什么?

1 个答案:

答案 0 :(得分:0)

如果未明确定义字段的类型,则猫鼬内部验证有时会返回一个sanatized字符串。我通过在过去定义模式来解决它。

var Sub = new mongoose.Schema({
    name: String
});

var UserSchema = new mongoose.Schema({
  name: String,
  sub: [ Sub ]
});