删除父记录时删除位于 Array 中的嵌套解析对象

问题描述

我有一个自定义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))
            }
        }
    }

解决方法

您可以创建和 afterDelete 触发器来删除子项:

Parse.Cloud.afterDelete('Invoice',({ object }) => {
  return Parse.Object.destroyAll(object.get('arrayField'));
});