Express 使用socket.io emit-findOneAndUpdate表示

Express 使用socket.io emit-findOneAndUpdate表示,express,socket.io,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.m

对于使用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);
}
根据前面和后面的描述,中间件只钩住init、validate、save和remove。如果查看findByIdAndUpdate函数的源代码,您会发现它完成了查询中的所有工作,这意味着它将通过所有pre和post的save中间件。它有自己的查询中间件

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

Schema.findById(id, function(err, doc){
   // do some update on doc.
   doc.save(function(err){
       // all the additional works. 
   })
})
save函数将触发save中间件,其功能与findByIDAndUpdate相同