Mongoose findByIdAndUpdate가 올바른 모델을 반환하지 않음
Mongoose findByIdAndUpdate가 콜백에서 올바른 모델을 반환하지 않는 것은 지금까지 본 적이 없는 문제입니다.
코드는 다음과 같습니다.
var id = args._id;
var updateObj = {updatedDate: Date.now()};
_.extend(updateObj, args);
Model.findByIdAndUpdate(id, updateObj, function(err, model) {
if (err) {
logger.error(modelString +':edit' + modelString +' - ' + err.message);
self.emit('item:failure', 'Failed to edit ' + modelString);
return;
}
self.emit('item:success', model);
});
DB의 원본 문서는 다음과 같습니다.
{
_id: 1234
descriptors: Array[2],
name: 'Test Name 1'
}
updateObj는 다음과 같이 표시됩니다.
{
_id: 1234
descriptors: Array[2],
name: 'Test Name 2'
}
콜백에서 반환된 모델은 updated Obj가 아닌 원래 모델과 동일합니다.db를 조회하면 올바르게 갱신된 것입니다.데이터베이스에서 반환되지 않을 뿐입니다.
이것은 'stupid-user' 오류처럼 느껴지지만 볼 수 없습니다.어떤 아이디어라도 감사합니다.
Mongoose 4.0에서는, 다음의 디폴트 값은new
의 선택사항findByIdAndUpdate
(그리고findOneAndUpdate
)가 로 변경되었습니다.false
이는 오래된 문서를 반환하는 것을 의미합니다(릴리스 노트의 #2262 참조).따라서 옵션을 명시적으로 설정할 필요가 있습니다.true
업데이트 적용 후 문서의 새 버전을 가져오려면 다음 절차를 따릅니다.
Model.findByIdAndUpdate(id, updateObj, {new: true}, function(err, model) {...
app.put/filength/:id",clonc(req,res)=>{
res.send(req.params)
모델명을 기다립니다.findByIdAndUpdate(ID, {type:change}, function(err, docs){
if(err){
conslole.log(err)
}카운트 { }
console.log(표준)
}
})
})
예:
app.put/filength/:id",clonc(req,res)=>{
res.send(req.params)
const 데이터 = userModel.findByIdAndUpdate(req.params.id, {isVendor: true}, function(err, docs){
if(err){
conslole.log(err)
}카운트 { }
console.log(docs)
}
})
})
언급URL : https://stackoverflow.com/questions/30419575/mongoose-findbyidandupdate-not-returning-correct-model
'programing' 카테고리의 다른 글
Rails에서 간단한 json 응답을 보내려면 어떻게 해야 합니까? (0) | 2023.03.28 |
---|---|
reactJs가 event.persist()가 있는 이벤트에서 상태를 설정할 수 없습니다. (0) | 2023.03.28 |
RestTemplate PATCH 요청 (0) | 2023.03.28 |
Wordpress에서 "An active PHP session was detected" 중요 경고를 받는 중 (0) | 2023.03.28 |
AngularJS 인증, 세션 관리 및 REST API WS 보안 문제 (0) | 2023.03.28 |