Skip to content

Commit 2180d13

Browse files
committed
fit(fill model properties from ReferencesMany relationship)
1 parent 42ede51 commit 2180d13

File tree

1 file changed

+36
-12
lines changed

1 file changed

+36
-12
lines changed

lib/deserializer.js

+36-12
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ module.exports = function deserializer (options, cb) {
4545
afterDeserialize(deserializeOptions, function (err, deserializeOptions) {
4646
if (err) return cb(err)
4747

48-
belongsToRelationships(deserializeOptions)
48+
fillFromRelationships(deserializeOptions)
4949
return cb(null, deserializeOptions)
5050
})
5151
})
5252
})
5353
}
5454

55-
function belongsToRelationships (options) {
55+
function fillFromRelationships (options) {
5656
var data = options.data
5757
var model = options.model
5858

@@ -66,17 +66,41 @@ function belongsToRelationships (options) {
6666
var type = serverRelation.type
6767

6868
// only handle belongsTo
69-
if (type !== 'belongsTo') return
70-
71-
var fkName = serverRelation.keyFrom
72-
var modelTo = serverRelation.modelFrom
73-
74-
if (!modelTo) return false
69+
if (type === 'belongsTo') {
70+
belongsToRelation(serverRelation, relationship.data, options)
71+
return
72+
}
7573

76-
if (!relationship.data) {
77-
options.result[fkName] = null
78-
} else {
79-
options.result[fkName] = relationship.data.id
74+
if (type === 'referencesMany') {
75+
referencesManyRelation(serverRelation, relationship.data, options)
8076
}
8177
})
8278
}
79+
80+
function belongsToRelation (serverRelation, data, options) {
81+
var fkName = serverRelation.keyFrom
82+
var modelTo = serverRelation.modelFrom
83+
84+
if (!modelTo) return
85+
86+
if (!data) {
87+
options.result[fkName] = null
88+
} else {
89+
options.result[fkName] = data.id
90+
}
91+
}
92+
93+
function referencesManyRelation (serverRelation, data, options) {
94+
var fkName = serverRelation.keyFrom
95+
var modelTo = serverRelation.modelFrom
96+
97+
if (!modelTo) return
98+
99+
if (!data) {
100+
options.result[fkName] = []
101+
} else {
102+
options.result[fkName] = data.map(function (resource) {
103+
return resource.id
104+
})
105+
}
106+
}

0 commit comments

Comments
 (0)