gpt4 book ai didi

ember.js - 调用 ember 数据 destroyRecord() 时如何从 json-api server 200 响应访问顶级元键

转载 作者:行者123 更新时间:2023-12-04 19:01:57 25 4
gpt4 key购买 nike

我正在开发一个使用 Ember Data 和现在默认的 json-api 适配器的 Ember 应用程序。

根据 json-api 规范( http://jsonapi.org/format/#crud-deleting )删除记录时,您的服务器应返回 200如果删除成功并且服务器仅以顶级响应 meta key 。

我当前的服务器就是这样做的,我试图弄清楚在使用 Ember Data 的 model.destroyRecord() 时如何访问顶级元对象中的数据。方法。

myModel.destroyRecord().then(function(model){
// the returned value is the model. How can I get the actual metadata
// returned by the server?
});

服务器响应包含有关确切删除内容的信息,如下所示:
{
"meta": {
num-deleted-a: 10,
num-deleted-b: 100,
num-deleted-c: 200
}
}

我想获取此信息,以便将其显示给用户。

谢谢!

我正在使用以下版本:
Ember             : 2.2.0
Ember Data : 2.3.3
jQuery : 1.11.3

最佳答案

升级到 Ember 2.6.1 和 Ember 2.6.1 后,我无法再访问 store._metadataFor属性(property)。

为了从特定调用访问元数据,我现在覆盖模型的序列化程序并添加 meta属性到模型本身,它只是通过元数据。

例如,我有一个名为 vote 的记录类型。保存时会返回一些元数据。

对于模型,我执行以下操作:

// Vote Model (/app/models/vote)
export default DS.Model.extend({
vote: DS.attr('number'),
// Since i don't provide a transform the values for meta are passed through in
// raw form
meta: DS.attr()
});

然后在投票模型的序列化程序中,我执行以下操作:
// Vote serializer (/app/serializers/vote)
import DS from "ember-data";

export default DS.JSONAPISerializer.extend({
normalizeSaveResponse(store, primaryModelClass, payload, id, requestType) {
// The metadata in the payload does get processed by default and will be
// placed into a top level `meta` key on the returned documentHash
let documentHash = this._super(store, primaryModelClass, payload, id, requestType);

// Make sure we always have an empty object assigned to the meta attribute
if(typeof(payload.meta) !== 'object'){
payload.meta = {};
}

// Move the metadata into the attributes hash for the model
documentHash.data.attributes.meta = payload.meta;

return documentHash;
}
});

请注意,在上面的示例中,我仅在对商店进行保存调用时将元数据添加到投票模型中。如果您想始终添加元数据,那么您可以覆盖 normalize方法而不是 normalizeSaveResponse方法。

然后您可以访问 meta保存调用结果中的字段。
let vote = self.store.createRecord('vote', {
vote: voteValue
});

vote.save().then(function(result){
// this will now contain your metadata
console.info(result.get('meta'));
});

关于ember.js - 调用 ember 数据 destroyRecord() 时如何从 json-api server 200 响应访问顶级元键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35514055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com