Skip to content

Commit f69f560

Browse files
kingcodyAwk34
authored andcommitted
fix(events): mongoose event registration
As of `[email protected]` schema events should be registered before the model is compiled fixes #2479
1 parent 91b920b commit f69f560

File tree

4 files changed

+25
-15
lines changed

4 files changed

+25
-15
lines changed

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

+10-7
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 User from './user.model';<% } if (filters.sequelizeModels) { %>
7+
import {EventEmitter} from 'events';<% if (filters.sequelizeModels) { %>
98
import {User} from '../../sqldb';<% } %>
109
var UserEvents = new EventEmitter();
1110

@@ -24,10 +23,12 @@ var events = {
2423
};<% } %>
2524

2625
// Register the event emitter to the model events
27-
for(var e in events) {
28-
let event = events[e];<% if (filters.mongooseModels) { %>
29-
User.schema.post(e, emitEvent(event));<% } if (filters.sequelizeModels) { %>
30-
User.hook(e, emitEvent(event));<% } %>
26+
function registerEvents(User) {
27+
for(var e in events) {
28+
let event = events[e];<% if (filters.mongooseModels) { %>
29+
User.post(e, emitEvent(event));<% } if (filters.sequelizeModels) { %>
30+
User.hook(e, emitEvent(event));<% } %>
31+
}
3132
}
3233

3334
function emitEvent(event) {
@@ -37,5 +38,7 @@ function emitEvent(event) {
3738
done(null);<% } %>
3839
}
3940
}
40-
41+
<% if (filters.sequelizeModels) { %>
42+
registerEvents(User);<% } if (filters.mongooseModels) { %>
43+
export {registerEvents};<% } %>
4144
export default UserEvents;

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

+3-1
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);

Diff for: templates/endpoint/basename.events(models).js

+10-7
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;

Diff for: templates/endpoint/basename.model(mongooseModels).js

+2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
'use strict';
22

33
import mongoose from 'mongoose';
4+
import {registerEvents} from './<%= basename %>.events';
45

56
var <%= classedName %>Schema = new mongoose.Schema({
67
name: String,
78
info: String,
89
active: Boolean
910
});
1011

12+
registerEvents(<%= classedName %>Schema);
1113
export default mongoose.model('<%= classedName %>', <%= classedName %>Schema);

0 commit comments

Comments
 (0)