diff --git a/packages/strapi-bookshelf/lib/index.js b/packages/strapi-bookshelf/lib/index.js index 8fb4a67fc0..d2a6e5a8f9 100755 --- a/packages/strapi-bookshelf/lib/index.js +++ b/packages/strapi-bookshelf/lib/index.js @@ -709,6 +709,10 @@ module.exports = function(strapi) { acc[current] = params.values[current]; } else { switch (association.nature) { + case 'oneWay': + acc[current] = _.get(params.values[current], this.primaryKey, params.values[current]) || null; + + break; case 'oneToOne': if (response[current] !== params.values[current]) { const value = _.isNull(params.values[current]) ? response[current] : params.values; diff --git a/packages/strapi-generate-api/templates/mongoose/service.template b/packages/strapi-generate-api/templates/mongoose/service.template index 3cfd43758b..3219190e32 100755 --- a/packages/strapi-generate-api/templates/mongoose/service.template +++ b/packages/strapi-generate-api/templates/mongoose/service.template @@ -48,9 +48,12 @@ module.exports = { */ add: async (values) => { - const data = await <%= globalID %>.create(_.omit(values, _.keys(_.groupBy(strapi.models.<%= id %>.associations, 'alias')))); - await strapi.hook.mongoose.manageRelations('<%= id %>', _.merge(_.clone(data), { values })); - return data; + const query = await <%= globalID %>.create(_.omit(values, _.keys(_.groupBy(strapi.models.<%= id %>.associations, 'alias')))); + const data = query.toJSON ? query.toJSON() : query; + + await strapi.hook.mongoose.manageRelations('<%= id %>', _.merge(data, { values })); + + return query; }, /** diff --git a/packages/strapi-mongoose/lib/index.js b/packages/strapi-mongoose/lib/index.js index 9287cad292..06a915bf7a 100755 --- a/packages/strapi-mongoose/lib/index.js +++ b/packages/strapi-mongoose/lib/index.js @@ -505,10 +505,13 @@ module.exports = function (strapi) { acc[current] = params.values[current]; } else { switch (association.nature) { + case 'oneWay': + acc[current] = _.get(params.values[current], this.primaryKey, params.values[current]) || null; + + break; case 'oneToOne': if (response[current] !== params.values[current]) { const value = _.isNull(params.values[current]) ? response[current] : params.values; - const recordId = _.isNull(params.values[current]) ? value[Model.primaryKey] || value.id || value._id : value[current]; if (response[current] && _.isObject(response[current]) && response[current][Model.primaryKey] !== value[current]) {