一个关于 ember.js 的 serializer 问题

发布于 2022-09-01 07:37:11 字数 1748 浏览 24 评论 0

ember 的 REST Adapter 期待的 json (customer/:customer_id)是下面这样的格式的:


{ "customer": { "CustomerID": "ALFKI", "CompanyName": "Alfreds Futterkiste", "ContactName": "Maria Anders", "ContactTitle": "Sales Representative", "id": "b0d16ed0-c901-4ca3-ba41-7fc74c96909f" } }

但是我的服务器的 API 是这样的:

{
        "CustomerID": "ALFKI",
        "CompanyName": "Alfreds Futterkiste",
        "ContactName": "Maria Anders",
        "ContactTitle": "Sales Representative",
        "id": "b0d16ed0-c901-4ca3-ba41-7fc74c96909f"
}

于是我可以这样(在 app/serializers/customer.js 文件里):

  serializeIntoHash: function(data, type, record, options) {
      Ember.merge(data, this.serialize(record, options));
  }

这样就解决问题了。

但是另外一个问题是,我的服务器返回所有 coustomers 的 API 是这样的:

{
    "value": [
        {
        "CustomerID": "ALFKI",
        "CompanyName": "Alfreds Futterkiste",
        "ContactName": "Maria Anders",
        "ContactTitle": "Sales Representative",
        "id": "b0d16ed0-c901-4ca3-ba41-7fc74c96909f"
    },
    {
        "CustomerID": "ANATR",
        "CompanyName": "Ana Trujillo Emparedados y helados",
        "ContactName": "Ana Trujillo",
        "ContactTitle": "Owner",
        "id": "3f8ac226-9f78-42df-b337-0505f69792c3"
    },
    {
        "CustomerID": "ANTON",
        "CompanyName": "Antonio Moreno Taquería",
        "ContactName": "Antonio Moreno",
        "ContactTitle": "Owner",
        "id": "09d31df6-69f4-43e4-9cc6-7faa5b8b5e3b"
    }]
}

我怎样像上面那个 customer/:customer_id 例子一样,把返回所有 customers 的 API
变成 ember 的 /customers 所期待的那样呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你穿错了嫁妆 2022-09-08 07:37:11

在你的app/serializers/customer.js文件中创建下面的方法

extractArray: function(store, typeClass, payload){
    //payload是后台传过来的数据
    //在这里把payload的数据转成ember标准格式。
    payload.customers = payload.value;
    delete(payload.value);
    return this._super.apply(this, arguments)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文