복붙노트

[MONGODB] 콜백없이 몽구스 갱신

MONGODB

콜백없이 몽구스 갱신

나는 전형적인 스키마와 모델을 가지고 :

var mongoose = require('mongoose');

var userSchema = new mongoose.Schema({
    email: String,
    password: String,
    profile: {
        name: String,
        surname: String,
        photo: String
    },
    stats: {
        lastLogin: { type: Date, default: Date.now },
        loginCount: Number,
        lastIP: String
    },
    source: String,
    deleted: Boolean,
    dateCreated: { type: Date, default: Date.now }
});

mongoose.model('User', userSchema);

나는이 업데이트를 수행 할 때, 내가 콜백을 정의하는 경우에만, 다른 작동 단순히 실행하지만 값이 데이터베이스에 변경되지 않습니다 :

User.update({email:'foo@bar.com'}, {$inc: {'stats.loginCount': 1}});

이 작품 :

User.update({email:'foo@bar.com'}, {$inc: {'stats.loginCount': 1}}, function() {});

이 버그인가요? 내가 여기서 뭔가 빠진 것 같아요 ... 콜백이 필요한 경우 나 문서에 표시되지 않습니다하지만이 요구하는 이상하다.

참고 : 나는 테스트를 위해 이메일로 일치하고있어 내가 간단한 익스프레스 v3.0.6 설치와 NodeJS의 v0.8.17에 몽구스 v3.5.4을 사용하고, 제안한다.

미리 감사드립니다.

해결법

  1. ==============================

    1.몽구스와 전화 업데이트에 대한 올바른 방법은 다음과 같다 :

    몽구스와 전화 업데이트에 대한 올바른 방법은 다음과 같다 :

    User.update(query, update).exec(callback);
    

    당신이 콜백 건너 뛸 수있을 것입니다 이런 식으로 :

    User.update(query, update).exec();
    

    때 호출

    User.update(query, update)
    

    그것은 질의 객체를 반환합니다.

    당신이 그것을 실행하기 전에 쿼리 개체를 조작 할 수 있기 때문에, 당신은 당신의 데이터베이스를 조회 할 때 매우 유용합니다. 예를 들어, 찾기 쿼리에 대한 제한을 지정할 수 있습니다 :

    User.find(query).limit(12).exec(callback);
    

    업데이트가 그것 때문에 유용하지 불구하고, 같은 메커니즘을 사용합니다.

  2. from https://stackoverflow.com/questions/14613890/mongoose-update-without-callback by cc-by-sa and MIT license