Say это документ схемы
'use strict';
import mongoose from 'mongoose';
var MessageSchema = new mongoose.Schema({
toid: String,
fromid: String,
toname: String,
fromname: String,
content: String,
date: { type: Date, default: Date.now }
});
export default mongoose.model('Message', MessageSchema);
А вот код бэкенд, где, где вы изменить содержание документа
import {Router} from 'express';
var router = new Router();
router.post('/create/:id', function(req, res){
return Message.create(req.body)
.then(respondWithResultAndEmitAnEvent(res, 201))
.catch(handleError(res));
});
Так что respondWithResultAndEmitAnEvent функция взгляд что-то вроде этого, поскольку название предполагает, что даже пользователь POST передает данные на сервер (скажем, на url xyz.com/api/create/:id), сервер выдаст событие, которое может быть захвачено другими клиентами.
function respondWithResultAndEmitAnEvent(res, statusCode) {
statusCode = statusCode || 200;
return function(entity) {
if (entity) {
socket.emit('message_added', entity);
res.status(statusCode).json(entity);
}
};
}
На стороне клиента вы можете прослушать это событие «message_added» и обновить его.
socket.on('message_added', function (data) {
console.log(data);
//update the client with new data;
});
У вас есть контроль над процессом обновления MongoDB? – srquinn
@jibsales yes, но это другой сервер, и я знаю, как делать что-то вручную, но мне было интересно, может ли встроенная в него возможность помочь. – Kanka
Нет встроенной поддержки для перехватчиков, триггеров, прослушивателей и т. Д., Но проверьте следующее сообщение SO (тот, самый высокий процент, а не принятый ответ): http://stackoverflow.com/questions/9691316/how-to-listen-for-changes-to-a-mongodb-collection – srquinn