gpt4 book ai didi

ember.js - 恩伯斯 : cannot read property 'type' of undefined

转载 作者:行者123 更新时间:2023-12-02 05:42:21 27 4
gpt4 key购买 nike

我在我的 ember 应用程序中创建了一个名为 ticket-stats 的模型:

import Model from 'ember-data/model';
import attr from 'ember-data/attr';

export default Model.extend({

get_tickets_more: attr(),
get_tickets: attr(),
get_avg_tickets: attr()

});

数据是从 JSON api 中提取的:http://domain.com/data/ticketStats?blah=blah ...所以我为这个模型添加了一个名为 ticket-stats 的特殊适配器:

import JSONAPIAdapter from 'ember-data/adapters/json-api';

export default JSONAPIAdapter.extend({

host: 'http://domain.com',
namespace: 'data',

pathForType: function(type) {
return Ember.String.camelize(type);
}
});

我在 route 获取此模型的数据:

import Ember from 'ember';

export default Ember.Route.extend({

model () {
var ticketData;
this.store.query('ticket-stats', { teamID: 218, attUID: 'oc7569', useProd: 1})
.then(function(stats) { ticketData = stats; });

return Ember.RSVP.hash({
currentUser: this.currentUser,
ticketStats: ticketData
});
}
});

而且,我得到一个 TypeError:

ember.debug.js:32096 TypeError: Cannot read property 'type' of undefined
at _pushInternalModel (store.js:1524)
at push (store.js:1501)
at finders.js:171
at Object.Backburner.run (ember.debug.js:678)
at _adapterRun (store.js:1733)
at finders.js:168
at tryCatch (ember.debug.js:53806)
at invokeCallback (ember.debug.js:53821)
at publish (ember.debug.js:53789)
at ember.debug.js:32054onerrorDefault @ ember.debug.js:32096exports.default.trigger @ ember.debug.js:54476(anonymous function) @ ember.debug.js:55727Queue.invoke @ ember.debug.js:333Queue.flush @ ember.debug.js:397DeferredActionQueues.flush @ ember.debug.js:205Backburner.end @ ember.debug.js:560(anonymous function) @ ember.debug.js:1126

关于为什么会发生这种情况的任何想法?当我删除适配器中的 pathForType 函数时,此错误消失,但随后我收到另一个有关从 http://domain.com/data/ticket-stats 获取数据的错误?... 这不是正确的 URL。我必须转换为驼峰命名法,ticket-stats => ticketStats。

这是我的 json 的样子:

{
"get_avg_tickets": { ... },
"get_tickets_more": { ... },
"get_tickets": { ... }
}

我还修改了应用程序序列化程序,只需将 JSONAPISerializer 替换为 JSONSerializer:app/serializers/application.js

import JSONSerializer from 'ember-data/serializers/json';

export default JSONSerializer.extend({
});

任何帮助将不胜感激!我是 Ember 的新手。

最佳答案

你需要使用这个序列化器这里是引用链接 http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html

import DS from 'ember-data';

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
normalizeQueryResponse(store, primaryModelClass, payload, id, requestType) {
payload = { ticketStats: payload };
return this.normalizeArrayResponse(store, primaryModelClass, payload, id, requestType);
},
});

你的 json 应该是这样的格式:

{
"get_avg_tickets": 45,
"get_tickets_more": propertyvalue,
"get_tickets": propertyvalue
}

否则你需要在serializer的normalizeQueryreponse中规范你的响应

还准备了以下文档以寻求帮助 http://thejsguy.com/2015/12/05/which-ember-data-serializer-should-i-use.html我希望它能帮助你。不要忘记接受我的回答。

关于ember.js - 恩伯斯 : cannot read property 'type' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37462245/

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