我在mongodb(Mongoose)中保存json对象时遇到问题,所以当我进行插入时一切正常,但是当我发出相同对象的请求时,Mongoose返回一个修改过的json。它就像Mongoose自动完成推特领域,我不知道为什么。
这是我的代码:
UserSchema = mongoose.Schema({
firstName: String,
lastName: String,
email: String,
salt: String,
hash: String,
twitter:{
id: String,
email: String,
name: String
},
facebook:{
id: String,
email: String,
name: String,
username: String,
photo: String,
gender: String
}
});
我将json保存在我的数据库中:
User.create({
email : profile.emails[0].value,
facebook : {
id: profile.id,
email: profile.emails[0].value,
name: profile.displayName,
username: profile.username,
photo: profile.photos[0].value,
gender: profile.gender
}
}, function(err, user){
if(err) throw err;
// if (err) return done(err);
done(null, user);
});
但是,当我的猫鼬返回一个json时。
Mongoose在json中生成了一个字段。 twitter:{}< ----
我不知道为什么,有人可以帮我一把吗?
答案 0 :(得分:1)
如果查看保存到MongoDB的文档,除非设置了子对象的属性,否则您将看到twitter
对象实际上不存在。创建对象,以便您可以方便地设置属性,而无需担心创建子/嵌套对象。所以你可以这样做:
var user = new User();
user.twitter.id = 'wiredprairie';
user.save();
结果:
{ "_id" : ObjectId("522259394eb9ed0c30000002"),
"twitter" : { "id" : "wiredprairie" }, "__v" : 0 }
如果你更进一步想要一个更“纯粹”的数据视图,你可以在Mongoose模型实例上使用toJSON
:
console.log(user.toJSON());
结果:
{ _id: 522259ad3621834411000001, twitter: { id: 'wiredprairie' } }