我有一个要删除的余烬模型。因此,根据文档,我可以执行以下任一操作:
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模型在正文删除请求中发送其他内容?
答案 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
}