2013-05-28 1 views
0
Request.findOne({_id: id}).populate("user").exec(function(err, request) { 
    if (!err) { 
     request.user.firstname = firstname; 
     request.date = date; 
     request.save(next); 
    } 

저장 후 날짜는 변경되었지만 사용자의 성은 변경되지 않았습니다.
모델 :몽구스 JS - 문서 및 참조 문서 저장 방법

var Request = new Schema({ 
    user: { 
     type: ObjectId, 
     ref: 'User', 
     required: true 
    }, 
    date: { 
     type: Date, 
     default: Date.now() 
    }, 

나는 여전히

 request.user.save(function(err){ 
     if(!err) 
      request.save(next) 
    }); 

를 수행하여 작업을 수행 할 수 있습니다 그런데 왜 첫 번째 작업은하지 않습니다?

답변

2

몽구스 documentation on populate의 'Refs Updating'섹션을 확인하십시오.

예를 들어, 작성한 RequestUser 문서를 모두 저장해야한다는 것을 알 수 있습니다. (는 예를 들어, 그들은 먼저 콜백에서 그들은 '이야기'를 저장 사용자 인 Guille '를 저장합니다.를) 몽구스에서

, SubDocs.populate이 작업을 수행하지 않는 부모 문서가 있지만 저장할 때 저장합니다.

2

requestuser은 별도의 컬렉션에있는 문서이므로 각각 save 작업이 필요합니다. 이는 단순히 Mongoose가 작동하는 방식 (그리고 일반적으로 MongoDB)입니다. 업데이트 작업이 없으면 한 번에 둘 이상의 컬렉션에 영향을 미치지 않기 때문입니다.