У меня есть это location.model.js,
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var LocationsSchema = new Schema({
name: String,
description: String,
country_id:{
type: Schema.Types.ObjectId,
ref: 'Countries'
},
geo_location:{
type: [Number]
},
icon: String,
image: String,
status: {
type: Boolean,
default: true
},
created_at : {
type: Date,
default: new Date()
},
updated_at: {
type: Date
}
});
LocationsSchema.index({ geo_location: "2dsphere" });
module.exports = mongoose.model('Locations', LocationsSchema);
Я делаю такие запросы, как поиск, сохранение, обновление из файла контроллера.У меня есть файл location.socket, подобный этому.
'use strict';
var locations = require('./locations.model');
exports.register = function(socket) {
//socket.emit('locations:save', 'Helloooo');
locations.schema.post('save', function (doc) {
console.log('new location added');
});
}
Хук для сохранения поста мангуста работает нормально, если я помещу этот хук в модель.Но тот же хук не срабатывает, когда я помещаю в файл location.socket.js.Так что все, что мне нужно, это сделать socket.emit из этого файла location.socket.js
Edit1: это app.js (файл запуска сервера)
var server = require('http').createServer(app);
var socketio = require('socket.io')(server, {
serveClient: config.env !== 'production',
path: '/socket.io'
});
require('./config/socketio')(socketio);
require('./config/express')(app);
require('./routes')(app);
server.listen(config.port, config.ip, function () {
console.log('server started');
});
, а вот socketio configфайл,
module.exports = function (socketio) {
socketio.on('connection', function (socket) {
require('../api/locations/locations.socket').register(socket);
})
}