Skip to content

Commit 66c54a9

Browse files
authored
Merge pull request loopbackio#1204 from schempy/fix/invalid-model-relation-name
Throw error when model relation name is trigger
2 parents 79ec421 + cd94be2 commit 66c54a9

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

lib/datasource.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,8 @@ DataSource.prototype.defineRelations = function(modelClass, relations) {
461461
Object.keys(relations).forEach(function(rn) {
462462
var r = relations[rn];
463463
assert(DataSource.relationTypes.indexOf(r.type) !== -1, 'Invalid relation type: ' + r.type);
464+
assert(isValidRelationName(rn), 'Invalid relation name: ' + rn);
465+
464466
var targetModel, polymorphicName;
465467

466468
if (r.polymorphic && r.type !== 'belongsTo' && !r.model) {
@@ -503,6 +505,12 @@ DataSource.prototype.defineRelations = function(modelClass, relations) {
503505
}
504506
};
505507

508+
function isValidRelationName(relationName) {
509+
var invalidRelationNames = ['trigger'];
510+
511+
return invalidRelationNames.indexOf(relationName) === -1;
512+
}
513+
506514
/*!
507515
* Set up the data access functions from the data source
508516
* @param {Model} modelClass The model class

test/relations.test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5609,4 +5609,24 @@ describe('relations', function() {
56095609
.catch(done);
56105610
});
56115611
});
5612+
5613+
describe('relation names', function() {
5614+
it('throws error when a relation name is `trigger`', function() {
5615+
Chapter = db.define('Chapter', {name: String});
5616+
5617+
(function() {
5618+
db.define(
5619+
'Book',
5620+
{name: String},
5621+
{
5622+
relations: {
5623+
trigger: {
5624+
model: 'Chapter',
5625+
type: 'hasMany',
5626+
},
5627+
},
5628+
});
5629+
}).should.throw('Invalid relation name: trigger');
5630+
});
5631+
});
56125632
});

0 commit comments

Comments
 (0)