ember.js ember未知关系

wbrvyc0a  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(198)

我目前正在用Rails + Ember 3.12构建软件,但是遇到了一个奇怪的问题。
我的模型如下:

// test-case-run
import DS from 'ember-data';
const { Model } = DS;

export default Model.extend({
  testCase: DS.belongsTo('test-case'),
  testCaseRunLogs: DS.hasMany('test-case-run-logs')
});

// test-case-run-log
import DS from 'ember-data';
const { Model } = DS;

export default Model.extend({
  testCaseRun: DS.belongsTo('test-case-run'),
  payload: DS.attr('')
});

而且,我的后端返回以下负载:
第一个
我有一个自定义适配器,它定义了:

pathForType(type) {
    return underscore(pluralize(type));
  }

所以,我认为一切都应该顺利。
然而,当我进入ember检查器时,我得到了以下内容:

我的关系似乎没有正确加载。而且,我无法访问任何数据,例如:

log.get('testCaseRun') // that is null 
run.get('testCaseRunLogs.length') // it returns 0

这是相当奇怪的,因为我的记录被加载到存储中,但不是他们的关系。我不知道如何解决这个问题,因为我可以从ember获得的信息量相当有限(没有错误,格式看起来很好,...)。
有人能帮助我了解我的通话有什么问题吗?我尝试了很多方法,比如重命名我的模型,但这并不能改善这种情况。
而且,只有这个型号有问题,其他型号都没有这个问题,所以有点奇怪。
多谢了

yeotifhr

yeotifhr1#

<(unknown):ember264>中的unknown引用了类名,这并不意味着你的关系没有正确加载,它只是使用了匿名类的Ember Data。
要查看关系的数据,您可以单击该字符串,然后单击content。另一个选项是使用右上角的$E链接将完整记录传递到控制台。然后,您可以在控制台上与记录进行交互,例如执行$E.get('testCaseRun.id')
顺便说一句:如果模型名称与 Jmeter 化属性名称匹配,则不需要在关系定义中显式声明模型名称。

v1l68za4

v1l68za42#

尝试使用不带“s”的模型名称声明hasMany关系

testCaseRunLogs: DS.hasMany('test-case-run-log')
wz3gfoph

wz3gfoph3#

终于,我找到了问题的答案。
问题在于我使用了“下划线”形式的关系:

"included": [
    {
      "id": "426",
      "type": "test_case_run_log", <= HERE
      "attributes": {
        "payload": "SCREENSHOT"
      },
      "relationships": {
        "test_case_run": {
          "data": {
            "id": "83",
            "type": "test_case_run" <= HERE
          }
        }
      }
    }
  ]

而且,改变pathForType是不够的。所以,我让我的后端使用破折号。而且,它工作。

相关问题