mirror of
https://github.com/strapi/strapi.git
synced 2025-09-26 08:52:26 +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
|
// set relation to null for all the ids not in the list
|
||||||
const currentIds = response[current];
|
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}`;
|
return `${a[assocModel.primaryKey] || a}` === `${b[assocModel.primaryKey] || b}`;
|
||||||
});
|
});
|
||||||
|
|
||||||
const updatePromise = assocModel
|
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 })
|
.save({ [details.via] : null }, { method: 'update', patch: true, require: false })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return assocModel
|
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 });
|
.save({ [details.via] : primaryKeyValue }, { method: 'update', patch: true, require: false });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -67,23 +67,21 @@ module.exports = {
|
|||||||
return _.set(acc, current, property);
|
return _.set(acc, current, property);
|
||||||
}
|
}
|
||||||
case 'oneToMany': {
|
case 'oneToMany': {
|
||||||
// receive array of ids or array of objects with ids
|
|
||||||
|
|
||||||
// set relation to null for all the ids not in the list
|
// set relation to null for all the ids not in the list
|
||||||
const currentIds = response[current];
|
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}`;
|
return `${a[assocModel.primaryKey] || a}` === `${b[assocModel.primaryKey] || b}`;
|
||||||
});
|
});
|
||||||
|
|
||||||
const updatePromise = assocModel.updateMany({
|
const updatePromise = assocModel.updateMany({
|
||||||
[assocModel.primaryKey]: {
|
[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 })
|
}, { [details.via] : null })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return assocModel.updateMany({
|
return assocModel.updateMany({
|
||||||
[assocModel.primaryKey]: {
|
[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 });
|
}, { [details.via] : primaryKeyValue });
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user