Express 使用socket.io emit-findOneAndUpdate表示
对于使用express的socket io来说,这是一个全新的概念,我使用的是yo angular express fullstack 保存和删除所有的工作都很好,但是当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
/**
* 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相同