2013-08-31 4 views
0

mongodb (몽구스)에 json 객체를 저장하는 데 문제가 있습니다. 모든 것을 삽입 할 때 괜찮습니다.하지만 동일한 객체를 요청하면 Mongoose가 수정 된 값을 반환합니다. json. 그 몽구스 같은 트위터 필드를 자동 완성 왜 나는 몰라요.몽구스에서 저장 /로드 json 객체 간의 차이점

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을 반환합니다.

enter image description here

몽구스는 JSON에서 필드를 생성. 트위터 : {} < ----

나는 왜 손을 빌려 줄 수 있니?

답변

1

MongoDB에 저장된 문서를 보면 하위 개체의 속성이 설정되어 있지 않으면 twitter 개체가 실제로 존재하지 않음을 알 수 있습니다. 하위/중첩 된 객체를 만들지 않고도 편리하게 속성을 설정할 수 있도록 객체가 만들어집니다. 그래서 당신은이 작업을 수행 할 수 있습니다

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

결과 :

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

그리고 당신은 데이터의보다 "순수"보기를 한 단계 더 가서 원한다면, 당신은 몽구스 모델 인스턴스에 toJSON를 사용할 수 있습니다 :

console.log(user.toJSON()); 

결과 :

{ _id: 522259ad3621834411000001, twitter: { id: 'wiredprairie' } } 
+0

나는 당신의 대답으로 문제를 해결했다. 나는 toJSON 함수와 그 함수를 잘 사용했다. 감사 – slorenzo