【问题标题】:Flutter Parse Server Sdk not saving the second object in the table (class)Flutter Parse Server Sdk 未保存表中的第二个对象(类)
【发布时间】:2020-10-17 03:45:08
【问题描述】:

这个函数接受一个ServicePoint对象作为参数,它具有以下属性:

  • adminId(字符串)
  • 名称(字符串)
  • 服务类型(枚举)

我希望这个函数创建一个名称为“name+adminId”的新表。这是实现的。 我还希望这个函数创建一个名为 ServicePoints 的新表(如果它不存在的话)。 ServicePoints 存储用户(objectId = adminId)与新表之间的关系。 为了实现这一点,我将“serviceTable”属性的值设置为创建的新表,充当指针。

当我第一次运行代码时,我实现了所需的表。但是,当我第二次运行该函数时,它不会将新行/记录添加到 ServicePoints 表中。 我不知道为什么。

UPDATE 我发现set ParseObject 操作是罪魁祸首。但是,令我惊讶的是,它第一次成功执行。但是每次都失败。这真是 parse_server_sdk_flutter 的荒谬行为。

Future<bool> createServicePoint(ServicePoint servicePoint) async {
    String newServicePointName = servicePoint.name + servicePoint.adminId;
    var newServiceTable = ParseObject(newServicePointName);
    var response = await newServiceTable.save();
    if (response.success) {
      print('Now adding new row to ServicePoints table');
      var servicePointsTable = ParseObject('ServicePoints')
        ..set<String>("serviceName", servicePoint.name)
        ..set<String>("adminId", servicePoint.adminId)
        ..set<String>("serviceType", _typeToLabel[servicePoint.serviceType])
        ..set<ParseObject>("serviceTable", newServiceTable);
      var recentResponse = await servicePointsTable.save();
      return recentResponse.success;
    } else {
      return false;
    }
  }

【问题讨论】:

  • 如果有人想运行,我可以在github上分享测试代码,重现错误。请帮帮我。
  • 当您第一次保存时,Parse Server 从您第一次保存的对象中学习并创建列serviceType 作为指向您刚刚创建的名为servicePoint.name + servicePoint.adminId 的新类的指针。以下所有请求必须仅将属于此类的对象设置为 serviceType 列。任何其他类的对象都会失败。这可能是你的问题。
  • 哦,我明白了。可能就是这样。感谢您的见解@DaviMacêdo

标签: flutter parse-platform parse-server back4app


【解决方案1】:

如果有人遇到这个问题,你需要在保存 ParseObject 后检查结果。如果出现“无法保存到不存在的类/表”之类的错误,则只需转到仪表板并先创建表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多