【问题标题】:TypeError: Cannot read property "data" from undefinedTypeError:无法从未定义中读取属性“数据”
【发布时间】:2018-10-21 16:57:00
【问题描述】:

国家和客户这两条记录之间存在多对多关系。当我从客户端(一组客户端)获取一些记录并尝试将它们分配给这样的国家/地区(记录)时,record[clientsRelationName] = clients 出现以下集市错误,TypeError: Cannot read property "data" from undefined. 我确定变量 @ 987654323@ 实际上是一个字符串,对应于关系的名称,简称为客户。它与名为 data 的变量无关。事实上数据并不存在。而且我确定record 是一个已定义的变量。

知道为什么会这样吗?是bug吗?

【问题讨论】:

    标签: google-app-maker


    【解决方案1】:

    我已经看到这个问题,在服务器端记录上使用 Object.keys() 会产生 [key, data, state] 而不是该记录的预期字段。因此,如果您的编程分配涉及迭代该记录对象的属性,您可以点击此data 属性。

    不幸的是,到目前为止我只知道这些。也许App Maker Team 可以提供进一步的见解。

    【讨论】:

      【解决方案2】:

      正如您在问题中指出的那样,clientsRelationName 是与关系名称相对应的字符串。您的实际关系只是客户,因此以下任何一种都应该有效:

      record[Clients] = clients;
      

      record.Clients = clients;
      

      我实际上建议使用 record.YourRelation,因为当您在记录后使用点时,智能感知会自动显示该记录可用的字段名称或关系结束名称的所有选项。

      【讨论】:

      • 感谢@Markus 的回复。我不能使用record.Clients 的问题是因为我要访问的关系是动态传递的字符串。至于record[Clients] = clients; 还是不行。我认为您的意思是 record["clients"] = clients; 使用双引号。所以我不得不做一些奇怪的工作,以便在所有情况下都可以有问题地修改关联(我将作为答案发布)。我说所有场景是因为record[relationName] = someRecord(s)FromAnotherModel 在某些情况下适用于一个或多个关系。
      【解决方案3】:

      经过大量的尝试和错误,我终于找到了一种使用非常简单的解决方案让它工作的方法,这是我让它工作的唯一方法。基本上是为了避免在修改记录 TypeError: Cannot read property "data" from undefined 上的关联时出现这个奇怪的错误,我做了以下事情:

      遍历记录关系(数组)并弹出其中的每条记录。然后遍历要分配记录关系的其他记录(修改关联),将每个元素推送到记录关系。

      var length = record[relationNameAsVariable].length;
      for(var i=0; i<length; i++){
        record[relationNameAsVariable].pop();
      }
      

      现在record[relationNameAsVariable] 为空,请执行以下操作:

      for(var i=0; i < clientsArray.length; i++ ){
        record[relationNameAsVariable].push(clientsArray[i]);
      }
      

      尝试替换整个关联时,可能是错误或其他我做错的事情。我不确定。但这就像一个冠军。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-31
        • 2012-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多