라봉이의 개발 블로그

[mongoose] Query 옵션: new 본문

Node.js/mongoose

[mongoose] Query 옵션: new

Labhong 2018. 7. 30. 17:05
반응형

다음과 같이 find종류인 findOneAndUpdate, findByIdAndUpdate 쿼리를 이용하여 컬렉션에 존재하는 스키마의 데이터를 업데이트 하는 일이 주어졌다고 하자.


다음은 스키마 정의 부분이다.

const userSchema = new mongoClient.Schema({
    name: {
        type: String,
        required: true,
        unique: true
    },
    category: {
        team: Number,
        categoryType: String
    },
    gender: {
        type: String,
        enum: ["male", "female"],
        required: true
    },
    createOn: Date
});


다음은 name이 kkki인 원래의 document이다.

{ category: { categoryType: 'fast' },
  _id: 0,
  name: 'kkki',
  gender: 'male',
  createOn: 2018-07-30T07:14:37.404Z,
  __v: 0 }


다음은 findOneAndUpdate 구문이다.

userSchema.findOneAndUpdate({name: "kkki"},
        {category: {categoryType: req.body.updateType}}).exec()
        .then((updateUser)=> {
            console.log(updateUser);
        })


위의 쿼리를 실행하면 바뀌기 전의 document의 정보가 then의 callback 함수를 통해 나온다.

userSchema.findOneAndUpdate({name: "kkki"},
        {category: {categoryType: req.body.updateType}}).exec()
        .then((updateUser)=> {
            console.log(updateUser);
        })

만약 Update를 실행한 뒤의 정보를 받고 싶다면 new 옵션을 사용해야 한다.
userSchema.findOneAndUpdate({name: "kkki"},
        {category: {categoryType: req.body.updateType}},
        {new: true}).exec()
        .then((updateUser)=> {
            console.log(updateUser);
            res.send('ok');
        })





반응형
Comments