[mongoose] findOneAndUpdate

김예진·2022년 1월 14일
0

출처 : https://mongoosejs.com/docs/tutorials/findoneandupdate.html

북마크 기능에서 findOneAndUpdate를 사용하는데 업데이트된 문서가 반환되는게 아니라 업데이트 하기 전에 find한 문서를 반환했다. 몽구스 문서를 보니

이름에서 알 수 있듯이 지정된 , , 적용 및 findOneAndUpdate()문서와 일치하는 첫 번째 문서를 찾아 반환합니다. 기본적으로 문서 가 적용 되기 전의 상태로 반환 됩니다.filterupdatefindOneAndUpdate() update

이렇다고 한다.

적용된 문서를 반환하고 싶을 때는

적용된 후 문서를 반환하는 new옵션을 설정해야 합니다 .true update

const filter = { name: 'Jean-Luc Picard' };
const update = { age: 59 };

// `doc` is the document _after_ `update` was applied because of
// `new: true`
let doc = await Character.findOneAndUpdate(filter, update, {
  new: true
});
doc.name; // 'Jean-Luc Picard'
doc.age; // 59

find로 찾은 문서만 반환

const result = await Post.findOneAndUpdate(
    { postId: postId },
    { $push: { userBookmark: { _id: userId._id } } }
  );

업데이트 적용된 문서 반환하고 싶을 때

const result = await Post.findOneAndUpdate(
    { postId: postId },
    { $push: { userBookmark: { _id: userId._id } } },
    { new: true }
  );

갈길이 멀구만..

profile
Backend Developer 🌱 벨로그 내용을 티스토리로 이사중~!

0개의 댓글