测试是否已填充belongsTo关系

31moq8wy  于 2022-10-20  发布在  其他
关注(0)|答案(2)|浏览(159)

我有一个具有belongsTo关系的ember数据模型,我想测试这个关系中是否有任何值(即外键引用)。我最初以为我可以说:

if(myModel.rel !== null) {
    // do something now that belongsTo relationship has a value
}

但这当然行不通,因为myModel.rel永远不会为空,而是某种Ember Data对象。好的,很好。我将其调整为:

if(myModel.rel.content !== null) {
    // do something now that belongsTo relationship has a value
}

这确实有效,但我觉得这可能有点太“黑”了……在Ember Data中是否有一种更干净、更API驱动的方式来说明这个条件?

yptwkmov

yptwkmov1#

我知道这是一个老问题,但我是这样做的(我不知道怎么做)。

if (model.get('relationshipName.id')) {
  // there's and ID present, so it means theres a value for the foreign key
}

model.relationshipName.id在没有值时返回undefined,在有值时返回id。

jvlzgdj9

jvlzgdj92#

在Ember Data的较新版本中,有一个API可以获取如下关系的值:

model.belongsTo('relationshipName').value()

然后,您可以使用isPresent帮助程序以更习惯的方式检查nullundefined

import { isPresent } from '@ember/utils';

const relatedRecord = model.belongsTo('relationshipName').value();
const relatedRecordExists = isPresent(relatedRecord);

或者只需在if语句中使用返回值而不强制使用布尔值,例如:

if (relatedRecord) {
  ...
}

参考文献

相关问题