0

我在 mongodb(Mongoose) 中保存 json 对象时遇到问题,所以当我插入时一切正常,但是当我请求同一个对象时,Mongoose 返回一个修改后的 json。它就像猫鼬自动完成 twitter 字段,我不知道为什么。

这是我的代码:

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 中生成了一个字段。推特:{} <----

不知道为什么,谁能帮帮我?

4

1 回答 1

1

如果您查看保存到 MongoDB 的文档,您会发现该twitter对象实际上并不存在,除非设置了子对象的属性。创建对象是为了方便您设置属性,而无需担心创建子/嵌套对象。所以你可以这样做:

var user = new User();
user.twitter.id = 'wiredprairie';
user.save();

结果:

{ "_id" : ObjectId("522259394eb9ed0c30000002"), 
  "twitter" : { "id" : "wiredprairie" }, "__v" : 0 }

如果你更进一步,想要一个更“纯粹”的数据视图,你可以toJSON在 Mongoose 模型实例上使用:

console.log(user.toJSON());

结果:

{ _id: 522259ad3621834411000001, twitter: { id: 'wiredprairie' } }
于 2013-08-31T21:00:45.783 回答