TypeError: Cannot read property "data" from undefined

TypeError: Cannot read property "data" from undefined

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

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

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

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

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

record[Clients] = clients;

record.Clients = clients;

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

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

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