fix(events): mongoose event registration · angular-fullstack/generator-angular-fullstack@e3ed67f · GitHub
Skip to content

Commit e3ed67f

Browse files
committed
fix(events): mongoose event registration
As of `mongoose@4.8.0` schema events should be registered before the model is compiled fixes #2479
1 parent af9cdb6 commit e3ed67f

4 files changed

Lines changed: 25 additions & 15 deletions

File tree

templates/app/server/api/user(auth)/user.events.js

Lines changed: 10 additions & 7 deletions

templates/app/server/api/user(auth)/user.model(mongooseModels).js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
/*eslint no-invalid-this:0*/
33
import crypto from 'crypto';
44
mongoose.Promise = require('bluebird');
5-
import mongoose, {Schema} from 'mongoose';<% if(filters.oauth) { %>
5+
import mongoose, {Schema} from 'mongoose';
6+
import {registerEvents} from './user.events';<% if(filters.oauth) { %>
67

78
const authTypes = ['github', 'twitter', 'facebook', 'google'];<% } %>
89

@@ -257,4 +258,5 @@ UserSchema.methods = {
257258
}
258259
};
259260

261+
registerEvents(UserSchema);
260262
export default mongoose.model('User', UserSchema);

templates/endpoint/basename.events(models).js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
'use strict';
66

7-
import {EventEmitter} from 'events';<% if(filters.mongooseModels) { %>
8-
import <%= classedName %> from './<%= basename %>.model';<% } if(filters.sequelizeModels) { %>
7+
import {EventEmitter} from 'events';<% if(filters.sequelizeModels) { %>
98
var <%= classedName %> = require('<%= relativeRequire(config.get('registerModelsFile')) %>').<%= classedName %>;<% } %>
109
var <%= classedName %>Events = new EventEmitter();
1110

@@ -27,10 +26,12 @@ var events = {
2726
<%_ } -%>
2827

2928
// Register the event emitter to the model events
30-
for(var e in events) {
31-
let event = events[e];<% if(filters.mongooseModels) { %>
32-
<%= classedName %>.schema.post(e, emitEvent(event));<% } if(filters.sequelizeModels) { %>
33-
<%= classedName %>.hook(e, emitEvent(event));<% } %>
29+
function registerEvents(<%= classedName %>) {
30+
for(var e in events) {
31+
let event = events[e];<% if(filters.mongooseModels) { %>
32+
<%= classedName %>.post(e, emitEvent(event));<% } if(filters.sequelizeModels) { %>
33+
<%= classedName %>.hook(e, emitEvent(event));<% } %>
34+
}
3435
}
3536

3637
function emitEvent(event) {
@@ -40,5 +41,7 @@ function emitEvent(event) {
4041
done(null);<% } %>
4142
};
4243
}
43-
44+
<% if (filters.sequelizeModels) { %>
45+
registerEvents(<%= classedName %>);<% } if (filters.mongooseModels) { %>
46+
export {registerEvents};<% } %>
4447
export default <%= classedName %>Events;
Lines changed: 2 additions & 0 deletions

0 commit comments

Comments
 (0)