Skip to content

Commit e06dbc8

Browse files
fix: fix belongsTo relationships creation when creating a record (#602)
1 parent 6404c10 commit e06dbc8

File tree

1 file changed

+20
-27
lines changed

1 file changed

+20
-27
lines changed

src/services/resource-creator.js

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,40 +24,33 @@ class ResourceCreator {
2424
return targetKey;
2525
}
2626

27-
_makePromisesBeforeSave(record) {
28-
return async (promises, [name, association]) => {
29-
if (association.associationType === 'BelongsTo') {
30-
const setterName = `set${_.upperFirst(name)}`;
31-
const targetKey = await this._getTargetKey(name, association);
32-
const promise = record[setterName](targetKey, { save: false });
33-
promises.push(promise);
34-
}
35-
return promises;
36-
};
27+
async _makePromisesBeforeSave(record, [name, association]) {
28+
if (association.associationType === 'BelongsTo') {
29+
const setterName = `set${_.upperFirst(name)}`;
30+
const targetKey = await this._getTargetKey(name, association);
31+
return record[setterName](targetKey, { save: false });
32+
}
33+
return null;
3734
}
3835

39-
_makePromisesAfterSave(record) {
40-
return (promises, [name, association]) => {
41-
let setterName;
42-
if (association.associationType === 'HasOne') {
43-
setterName = `set${_.upperFirst(name)}`;
44-
} else if (['BelongsToMany', 'HasMany'].includes(association.associationType)) {
45-
setterName = `add${_.upperFirst(name)}`;
46-
}
47-
if (setterName) {
48-
const promise = record[setterName](this.params[name]);
49-
promises.push(promise);
50-
}
51-
return promises;
52-
};
36+
_makePromisesAfterSave(record, [name, association]) {
37+
let setterName;
38+
if (association.associationType === 'HasOne') {
39+
setterName = `set${_.upperFirst(name)}`;
40+
} else if (['BelongsToMany', 'HasMany'].includes(association.associationType)) {
41+
setterName = `add${_.upperFirst(name)}`;
42+
}
43+
if (setterName) {
44+
return record[setterName](this.params[name]);
45+
}
46+
return null;
5347
}
5448

5549
async _handleSave(record, callback) {
5650
const { associations } = this.model;
5751
if (associations) {
58-
callback = callback.bind(this);
59-
const promisesBeforeSave = Object.entries(associations).reduce(callback(record), []);
60-
await P.all(promisesBeforeSave);
52+
await P.all(Object.entries(associations)
53+
.map((entry) => callback.bind(this)(record, entry)));
6154
}
6255
}
6356

0 commit comments

Comments
 (0)