Ember-Model:如何使用“外键”建立hasMany或belongsTo关系?

时间:2014-08-01 19:25:10

标签: ember.js ember-cli ember-model

摘要

使用Ember-Model时遇到了一些问题,试图在两个模型之间建立一种独特的关系。

根据我在S.O.,Ember Forums#emberjs收到的当前回复。我开始相信没有针对此问题的内置解决方案,我正在重新格式化我的问题以指定所需的内容。

详细

我目前正在使用一整套债务人信息填充模板。所有信息都来自对服务器的多次调用。

第一位是基本债务人信息。这部分很简单,因为我可以使用模型钩子和动态段来检索它。

我的服务器为债务人返回JSON ......这是短版本:

{
  "debtor" = {
    "debtor_id": 1003,
    "debtor_name": Steve,
     //... more JSON
    "debtor_contact_id": 1345
  }
}

债务人的动态段填充了debtor_id的值,但也注意到这个债务人有debtor_contact_id。从服务器检索的每个Debtor记录都有一个唯一的debtor_contact_id。在数据库上,这个值是一个"外键"这将告诉哪个联系人表属于哪个债务人表。

如果没有此键/值对,则无法预测哪个联系人信息与哪个债务人有关。

我目前有"联系人" belongsTo"债务人",但这还不足以完成这项工作。

什么时候填写"联系人"模型。 Ember-Model需要知道将debtor_contact_id中的值构建到ajax URL 中作为查询参数才能获得正确的API。

我仍在学习所有这些内容,到目前为止,我还没有完全按照任何教程进行操作,因为我的用例在某个地方需要额外的步骤。

这是我希望看到的预期行为:

  1. 模型钩子将按预期工作以拉动特定债务人并将其交给债务人" model(这部分目前正常工作)
  2. 不知何故" debtor_contact_id"从有效载荷中读取
  3. 该值作为服务器查询的一部分添加,以查找单独的API
  4. 生成的联系信息将被提取到"联系人"模型
  5. 希望在返回两个相应的模型后建立hasMany / belongsTo关系。
  6. 所有这些都需要在进入我的模板之前在一个承诺中完成
  7. 如果这是更适合讨论的地方,您还可以在discuss.emberjs.com找到问题。

    如果这没有意义,我可以详细说明......谢谢!

1 个答案:

答案 0 :(得分:0)

假设您正在使用ember-data,并且需要添加模型属性:

debtor_contact: DS.belongsTo('name_of_the_other_model')

然后,这将为您提供一个承诺,该承诺将根据需要解析为其他模型。它不会立即解决,但模板中的绑定变量将在解析时更新。如果设置正确,将为您制作另一个API调用。

http://emberjs.com/api/data/classes/DS.html#method_belongsTo

如果您因某些原因需要强制解决关系,我在这里给出的答案可能会有所帮助:Ember Unbound & Belongsto