如何与余烬一起发送附加信息删除模型请求

时间:2019-01-17 13:33:34

标签: javascript ember.js

我有一个要删除的余烬模型。因此,根据文档,我可以执行以下任一操作:

store.findRecord('post', 1, { backgroundReload: false }).then(function(post) {
        post.deleteRecord();
        post.get('isDeleted'); // => true
        post.save(); // => DELETE to /posts/1
    });

OR

store.findRecord('post', 2, { backgroundReload: false }).then(function(post) 
{
  post.destroyRecord(); // => DELETE to /posts/2
});

但是,假设要删除帖子模型,我需要其他信息。例如,我也想知道'idAplication'(复制发送删除请求)和'userEmail'(用户试图删除帖子)。

问题是:默认情况下,炭烬商店只会向我发送帖子ID:  myapi.com/posts/1

我该怎么做?如何使用ember模型在正文删除请求中发送其他内容?

1 个答案:

答案 0 :(得分:0)

销毁记录时,您可以将某些数据作为查询字符串发送,例如DELETE posts/2?applicationId=1234

为此,您可以覆盖模型适配器中 urlForDeleteRecord 的构建方式(或覆盖主应用适配器以为所有模型添加功能)。

app \ adapters \ application.js

import ActiveModelAdapter from 'active-model-adapter';
// other imports ...

export default ActiveModelAdapter.extend({
  // other configurations ...

  urlForDeleteRecord(id, modelName, { adapterOptions: { data } }) {
    let queryString = data
      ? '?' + Object.keys(data).map(prop => `${prop}=${data[prop]}`).join('&')
      : '';

    return this._super(...arguments) + queryString;
  }
});

稍后在代码中,您可以调用destroyRecord传递一些数据,例如

store.findRecord('post', 2)
  .then((post) => { 
    post.destroyRecord({ adapterOptions: {
      data: {
        prop1: "value1",
        prop2: "value2"
      }
    }}); // => DELETE to /posts/2?prop1=value1&prop2=value2
  }