Ember js,不能将已标准化的json api数据推入商店

时间:2016-07-20 21:59:28

标签: javascript ember.js ember-data

我无法将回复推送到商店。根据我回归jsonapi规范后的文档,我应该能够直接推进它而不首先将其标准化。

将响应推送到商店的代码如下所示:

  getCurrentUser() {
    return get(this, 'store').queryRecord('user', {self: true})
      .then((response) => {
        const user = get(this, 'store').push(response);
        set(this, 'account', user);
        return user;
      });
  }

这会引发You must include an 'id' for undefined in an object passed to 'push'。但是,如果我使用服务器的输出创建一个虚拟响应

 getCurrentUser() {
    return get(this, 'store').queryRecord('user', {self: true})
      .then((response) => {

        const testResponse =
        {
          "data": {
            "type": "user",
            "id": "578846b3e5438b26ebbce7d4",
            "attributes": {
              "identification": "admin",
              "display-name": "Administrator"
            },
            "relationships": {
              "servers": {
                "data": []
              },
              "jobs": {
                "data": []
              }
            }
          }
        };

        const user = get(this, 'store').push(testResponse);
        set(this, 'account', user);
        return user;
      });
  }

一切都按预期工作。 testResponse中的数据是邮递员的直接复制和粘贴,因此它与responseresponse.data中的数据不一致吗?

所以我尝试过将其标准化,但是会遇到各种各样的错误。

 getCurrentUser() {
    return get(this, 'store').queryRecord('user', {self: true})
      .then((response) => {
        const [data] = response.data;
        const normalizedData = get(this, 'store').normalize('user', data);
        const user = get(this, 'store').push(normalizedData);
        set(this, 'account', user);
        return user;
      });
  }
});

抛出Invalid attempt to destructure non-iterable instance TypeError

我尝试了上面几种不同的组合来获取各种错误。

任何指针都将不胜感激。

0 个答案:

没有答案