TypeError:无法从未定义中读取属性“数据”

时间:2018-10-21 16:57:01

标签: google-app-maker

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

知道为什么会这样吗?是一个错误吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

record[Clients] = clients;

record.Clients = clients;

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

答案 2 :(得分:0)

经过大量的摸索和错误,我终于找到了一种使用非常简单的解决方案使其工作的方法,这是我使之可行的唯一方法。基本上,在修改记录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]);
}

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

相关问题