Express with socket.io emit - findOneAndUpdate

时间:2015-07-08 04:58:46

标签: express socket.io

对于使用express的socket io来说相当新,我正在使用yo angular-express fullstack。

保存并删除所有正常工作,但当它来到 findOneAndUpdate 时,它似乎不再起作用了。谁有人可以帮忙?有没有办法在控制器内发射?

/**
 * Broadcast updates to client when the model changes
 */

'use strict';

var project = require('./project.model');

exports.register = function(socket) {
  project.schema.post('save', function (doc) {
    onSave(socket, doc);
  });
  project.schema.post('remove', function (doc) {
    onRemove(socket, doc);
  });
}

function onSave(socket, doc, cb) {
  socket.emit('project:save', doc);
}

function onRemove(socket, doc, cb) {
  socket.emit('project:remove', doc);
}

1 个答案:

答案 0 :(得分:0)

根据Mongoose Document,中间件前后只挂钩初始化,验证,保存,删除。如果您查看findByIdAndUpdate函数的源代码,您会发现它在查询中完成所有工作,这意味着它将通过所有pre和post的save中间件。 (它有自己的查询中间件)

但是,您仍然可以通过将findByIDAndUpdate函数重写为

来使其工作
foo_2

保存功能将触发保存中间件,其功能与findByIDAndUpdate相同。