mirror of
https://github.com/strapi/strapi.git
synced 2025-09-25 08:19:07 +00:00
Fix one to many update
This commit is contained in:
parent
def65ba152
commit
49d5491ff9
@ -121,16 +121,16 @@ module.exports = {
|
||||
|
||||
// set relation to null for all the ids not in the list
|
||||
const currentIds = response[current];
|
||||
const diff = _.differenceWith(property, currentIds, (a, b) => {
|
||||
const toRemove = _.differenceWith(currentIds, property, (a, b) => {
|
||||
return `${a[assocModel.primaryKey] || a}` === `${b[assocModel.primaryKey] || b}`;
|
||||
});
|
||||
|
||||
const updatePromise = assocModel
|
||||
.where(assocModel.primaryKey, 'in', currentIds.map(val => val[assocModel.primaryKey]||val))
|
||||
.where(assocModel.primaryKey, 'in', toRemove.map(val => val[assocModel.primaryKey]||val))
|
||||
.save({ [details.via] : null }, { method: 'update', patch: true, require: false })
|
||||
.then(() => {
|
||||
return assocModel
|
||||
.where(assocModel.primaryKey, 'in', diff.map(val => val[assocModel.primaryKey]||val))
|
||||
.where(assocModel.primaryKey, 'in', property.map(val => val[assocModel.primaryKey]||val))
|
||||
.save({ [details.via] : primaryKeyValue }, { method: 'update', patch: true, require: false });
|
||||
});
|
||||
|
||||
|
@ -67,23 +67,21 @@ module.exports = {
|
||||
return _.set(acc, current, property);
|
||||
}
|
||||
case 'oneToMany': {
|
||||
// receive array of ids or array of objects with ids
|
||||
|
||||
// set relation to null for all the ids not in the list
|
||||
const currentIds = response[current];
|
||||
const diff = _.differenceWith(property, currentIds, (a, b) => {
|
||||
const toRemove = _.differenceWith(currentIds, property, (a, b) => {
|
||||
return `${a[assocModel.primaryKey] || a}` === `${b[assocModel.primaryKey] || b}`;
|
||||
});
|
||||
|
||||
const updatePromise = assocModel.updateMany({
|
||||
[assocModel.primaryKey]: {
|
||||
$in: currentIds.map(val => new mongoose.Types.ObjectId(val[assocModel.primaryKey]||val))
|
||||
$in: toRemove.map(val => new mongoose.Types.ObjectId(val[assocModel.primaryKey]||val))
|
||||
}
|
||||
}, { [details.via] : null })
|
||||
.then(() => {
|
||||
return assocModel.updateMany({
|
||||
[assocModel.primaryKey]: {
|
||||
$in: diff.map(val => new mongoose.Types.ObjectId(val[assocModel.primaryKey]||val))
|
||||
$in: property.map(val => new mongoose.Types.ObjectId(val[assocModel.primaryKey]||val))
|
||||
}
|
||||
}, { [details.via] : primaryKeyValue });
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user