programing

Mongoose findByIdAndUpdate가 올바른 모델을 반환하지 않음

bestprogram 2023. 3. 28. 22:46

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