Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何序列化嵌入的belongsTo关系_Json_Ember.js_Ember Cli Mirage - Fatal编程技术网

Json 如何序列化嵌入的belongsTo关系

Json 如何序列化嵌入的belongsTo关系,json,ember.js,ember-cli-mirage,Json,Ember.js,Ember Cli Mirage,我使用master ember cli mirage分支来利用活动模型序列化程序和关系支持,现在我有了一个具有许多关系的完整工作示例,但是现在假设模型用户只有一个组织,我不知道如何将组织json嵌入到用户json中,到目前为止,我一直在尝试使用belongsTo,但运气不好,因为它试图向用户添加外键。看起来,如果用户没有组织,它会抛出一个错误,因为它会验证资源(null,因为没有组织)是否是一个模型,如果不是,它会尝试映射为一个集合,从而导致错误 不确定如何实现这种行为,我通过将用户设置为属于组

我使用master ember cli mirage分支来利用活动模型序列化程序和关系支持,现在我有了一个具有许多关系的完整工作示例,但是现在假设模型用户只有一个组织,我不知道如何将组织json嵌入到用户json中,到目前为止,我一直在尝试使用belongsTo,但运气不好,因为它试图向用户添加外键。看起来,如果用户没有组织,它会抛出一个错误,因为它会验证资源(null,因为没有组织)是否是一个模型,如果不是,它会尝试映射为一个集合,从而导致错误

不确定如何实现这种行为,我通过将用户设置为属于组织(实际上是相反的)并将组织id分配给用户organizationId来欺骗用户模型,这样它将组织对象嵌入到用户json中,但很明显,这只是一种黑客行为,而不是正确的/预期的方式,因为hasOne帐户是一种常见的模式


非常感谢您的建议。

您将希望向
/serializers
添加一个自定义序列化程序,该序列化程序以嵌入记录的模型命名:

import DS from 'ember-data';
// Assuming your application serializer extends ActiveModelSerializer
import ApplicationSerializer from './application';

const { EmbeddedRecordsMixin } = DS;

export default ApplicationSerializer.extend(EmbeddedRecordsMixin, {
  attrs: {
    yourEmbededRecordsModelName: {
      embedded: 'always'
    }
  }
});

我相信这目前不受支持,但它将在0.2.0发布之前得到支持。我需要添加一个选项到
belongsTo
,以便您可以指定哪个型号拥有外键。