diff --git a/src/Database.js b/src/Database.js index 2beb4e259e931e8112855b8bbb5ee549a0d9a5fa..540f66290f368fd9324ea3c6e80a0b4cbb2abf75 100644 --- a/src/Database.js +++ b/src/Database.js @@ -381,25 +381,26 @@ module.exports = function (Y /* :any */) { } } - // Delete if DS says this is actually deleted - var opIsDeleted = yield* transaction.isDeleted(op.id) - if (!op.deleted && opIsDeleted) { - var delop = { - struct: 'Delete', - target: op.id - } - yield* Y.Struct['Delete'].execute.call(transaction, delop) - } - // notify parent, if it was instanciated as a custom type if (t != null) { let o = Y.utils.copyObject(op) - if (opIsDeleted && !o.deleted) { - // op did not reflect the created delete op (happens when not using y-memory) - o.deleted = true - } yield* t._changed(transaction, o) } + // Delete if DS says this is actually deleted + var len = op.content != null ? op.content.length : 1 + for (var i = 0; i < len; i++) { + var id = [op.id[0], op.id[1] + i] + if (!op.deleted) { + var opIsDeleted = yield* transaction.isDeleted(id) + if (opIsDeleted) { + var delop = { + struct: 'Delete', + target: id + } + yield* this.tryExecute.call(transaction, delop) + } + } + } } } whenTransactionsFinished () {