如何发送附加信息以及 ember 删除模型请求

How to send addicional information along with ember Delete model request

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

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

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

但是,假设要删除 post 模型,我需要其他信息。例如,我还想知道 'idAplication'(发送删除请求的应用程序)和 'userEmail'(试图删除 post 的用户)。

问题是:默认情况下 ember 商店只会向我发送 post id: myapi.com/posts/1

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

销毁记录时,您可以发送一些数据作为查询字符串,如 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
  }