node.js - collection - mongoose node js



Обновление Mongoose без обратного вызова (1)

У меня типичная схема и модель:

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:'[email protected]'}, {$inc: {'stats.loginCount': 1}});

Это работает:

User.update({email:'[email protected]'}, {$inc: {'stats.loginCount': 1}}, function() {});

Это ошибка? Я не вижу в документации, если требуется обратный вызов, но странно это требовать ... Я думаю, что я что-то пропустил.

Примечания: Я сопоставляю по электронной почте для тестирования, я использую mongoose v3.5.4 в NodeJS v0.8.17 с простой установкой Express v3.0.6.

Заранее спасибо.


Правильный способ вызова update с помощью mongoose заключается в следующем:

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

Таким образом, вы сможете пропустить callback :

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

Когда вы звоните

User.update(query, update)

он возвращает объект запроса .

Это очень полезно при запросе вашей базы данных, потому что вы можете манипулировать с объектом запроса перед его выполнением. Например, вы можете указать limit для вашего запроса на find :

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

Update использует тот же механизм, хотя его не так полезно.





mongoose