如何发送附加信息以及 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
}
我有一个 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
}