删除父记录时删除位于 Array 中的嵌套解析对象
Posted
技术标签:
【中文标题】删除父记录时删除位于 Array 中的嵌套解析对象【英文标题】:Remove nested parse objects located in Array when removing parent record 【发布时间】:2021-06-10 21:40:20 【问题描述】:我有一个自定义类 Invoice
,其中包含自定义类 InvoiceItems 的数组。
当我删除Invoice
时,我想删除与之关联的所有记录。目前,当我删除 Invoice
时,发票项目仍在数据库中。
我认为当您删除父记录时,它应该删除嵌套项,因为我使用的是数组而不是关系或指针。
func removeInvoice(with invoice: Invoice, completion: @escaping (Result<Bool, NSError>) -> ())
guard let invoiceObjectId = invoice.getPFInvoice()?.objectId else
let error = NSError(domain: "OURTEAM", code: 0, userInfo: [NSLocalizedDescriptionKey: "Remove invoice failure"])
completion(.failure(error))
return
let query = PFQuery(className: "Invoice")
query.whereKey("objectId", equalTo: invoiceObjectId)
query.findObjectsInBackground (objects, error) in
if let unwrappedError = error as NSError?
completion(.failure(unwrappedError))
if let unwrappedObjects = objects
for object in unwrappedObjects
object.deleteEventually()
completion(.success(true))
【问题讨论】:
【参考方案1】:您可以创建和 afterDelete 触发器来删除孩子:
Parse.Cloud.afterDelete('Invoice', ( object ) =>
return Parse.Object.destroyAll(object.get('arrayField'));
);
【讨论】:
以上是关于删除父记录时删除位于 Array 中的嵌套解析对象的主要内容,如果未能解决你的问题,请参考以下文章
删除父对象时如何删除由stream.flatMap创建的列表中的子对象?