对于使用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);
}
答案 0 :(得分:0)
根据Mongoose Document,中间件前后只挂钩初始化,验证,保存,删除。如果您查看findByIdAndUpdate函数的源代码,您会发现它在查询中完成所有工作,这意味着它将通过所有pre和post的save中间件。 (它有自己的查询中间件)
但是,您仍然可以通过将findByIDAndUpdate函数重写为
来使其工作foo_2
保存功能将触发保存中间件,其功能与findByIDAndUpdate相同。