代码之家  ›  专栏  ›  技术社区  ›  O.Olivier

如何在CloudKit JS v2中保存记录

  •  0
  • O.Olivier  · 技术社区  · 7 年前

    使用CloudKit v1,您可以保存如下记录:

    function demoSaveRecord(recordName,recordChangeTag,zoneName,name,location,asset) {
    
      var container = CloudKit.getDefaultContainer();
      var privateDB = container.privateCloudDatabase;
    
      var record = {
        recordType: 'Items',
        fields: {
          name: { value: name }, ...
        }
      };
    
      return privateDB.saveRecord(record,options)
        .then(function(response) {
          if (response.hasErrors) {
            // Handle the errors in your app.
            throw response.errors[0];
    
          } else {
            // It worked
            var createdRecord = response.records[0];
          }
        });
    }
    

    但在CloudKit JS v2中,他们删除了。saveRecord选项。

    所以现在我陷入了困境,因为我不知道如何在v2中保存记录。

    CloudKit JS API Diff v2 https://developer.apple.com/library/content/releasenotes/General/CloudKitJS_v2_APIDiffs/JavaScript/CloudKitJS.html

    1 回复  |  直到 7 年前
        1
  •  1
  •   O.Olivier    7 年前

    显然你必须使用 .newRecordsBatch().create(record).commit()

    在我的示例中,它看起来是这样的:

    function demoSaveRecord(recordName,recordChangeTag,zoneName,name,location,asset) {
    
      var container = CloudKit.getDefaultContainer();
      var privateDB = container.privateCloudDatabase;
    
      var record = {
        recordType: 'Items',
        fields: {
          name: { value: name }, ...
        }
      };
    
      return privateDB.newRecordsBatch().create(record).commit()
        .then(function(response) {
          if (response.hasErrors) {
            // Handle the errors in your app.
            throw response.errors[0];
    
          } else {
            // It worked
            var createdRecord = response.records[0];
          }
        });
    }
    

    您可以使用相同的方法创建、更新和删除以下记录:

    myDatabase.newRecordsBatch()
        .create(someRecord)
        .update(someOtherRecord)
        .delete(aThirdRecord)
        .commit()
    

    文档可在此处找到: https://developer.apple.com/documentation/cloudkitjs/cloudkit.recordsbatchbuilder