Ember 数据模型中的计算属性在 ember-cli-mirage 模型中不可用

Computed properties in Ember data models not available from ember-cli-mirage models

我尝试使用 ember-cli-mirage 进行测试。我有很多具有计算属性的 Ember 数据模型。当我创建 Mirage 模型实例时,计算属性似乎不可用。我想知道我是否做错了什么,是否有办法让计算属性起作用?

// app/models/profile.js
import DS from 'ember-data';

export default DS.Model({
  firstName: attr('string'),
  lastName: attr('string'),

  fullName: computed('firstName', 'lastName', function() {
    // return ...
  })
});
// Create profile instance...
let profile = server.create('profile', { firstName: 'Tom', lastName: 'Stran' });
profile.firstName // Tom
profile.lastName  // Stran
profile.fullName // undefined
profile.get('fullName') // profile.get is not a function

谢谢!

您没有弄错 - Mirage 模型不会继承您的 Ember 数据模型的计算属性。我知道这很令人困惑,你肯定不是第一个问为什么的人。

Mirage 模型被称为 "models",因为在大多数系统(front-end 和 back-end)中,模型一词的意思是 "an object wrapping some data." 尽管 Mirage 被设计为与 Ember,Mirage 实际上根本不知道您的 Ember 应用程序。

Mirage 有自己的 "database"(一个 JavaScript 对象)和 ORM。模型可以方便您 "seed your server" 使用适合您的数据来开发和测试 Ember 应用程序。因此,就像您的 Ruby 模型无法访问您的 Ember 数据计算属性(如果您的服务器是用 Rails 编写的)一样,您的 Mirage 模型也存在在一个孤立的环境中。

在最近的版本中,Mirage 能够查看您的 Ember 数据模型并为自己的模式复制它们的关系。但这只是一种方便,仅用于 Mirage 的引导过程。

让我知道这是否解决了问题,或者如果您还有其他问题!