创建连接后,将运行此函数:
function setupModelListenersForConnection(c){
var Job = c.model('Job');
Job.addListener('created', function(jobInstance){
});
console.log('Models have been wired!');
}
在工作架构中我有这样的:
JobSchema.post('save', function(next){
this.db.models.Job.emit('created', this);
})
我不太喜欢的是
this.db.models.Job
,我认为有更好的方法来做到这一点;)非常感谢
为什么我需要它?
想象一下创造了一份工作。我想更新工作人员并设置其当前工作和新状态(忙碌)。
我喜欢将模型解耦,这样 Job 模型就不必知道 Worker 模型。只知道有关工人的一些详细信息,如 ID 和姓名。
这就是 mongoose-lifecycle 的作用
JobSchema.post('save', function(next){
var model = this.model(this.constructor.modelName);
model.emit('created', this);
})
export default function connection(mongoose, config, options) {
function connectToMongo() {
mongoose
.connect(config.mongo.uri, options)
.then(
() => {},
(err) => {
console.info('Mongodb error', err);
}
)
.catch((err) => {
console.log('ERROR:', err);
});
}
mongoose.connection.on('connected', () => {
console.info('Connected to MongoDB!');
});
mongoose.connection.on('reconnected', () => {
console.info('MongoDB reconnected!');
});
mongoose.connection.on('error', (error) => {
console.error(`Error in MongoDb connection: ${error}`);
mongoose.disconnect();
});
mongoose.connection.on('disconnected', () => {
console.error(
`MongoDB disconnected! Reconnecting in ${
options.reconnectInterval / 1000
}s...`
);
setTimeout(() => connectToMongo(), options.reconnectInterval);
});
return {
connectToMongo
};
}