【发布时间】:2015-10-01 14:20:44
【问题描述】:
在我们的 ember 应用中,我们使用以下版本的 ember-data 和 ember-data-factory-guy。
package.json
"ember-cli": "^1.13.8",
"ember-data": "1.13.9",
"ember-data-factory-guy": "1.13.10",
注意:我们使用的是 active-model 适配器,尚未迁移到 json-api 适配器。
import ActiveModelAdapter from 'active-model-adapter';
export default ActiveModelAdapter.extend({
路由:item.js
export default Ember.Route.extend(({
model(params) {
return this.store.findRecord('item', params.item_id);
}
});
它在开发模式下工作正常,但在运行测试用例时,遇到以下问题:
“显示单个项目”的测试用例失败并出现以下错误:
{
"message": "Cannot read property '_internalModel' of undefined",
"name": "TypeError"
}
ember-data/lib/system/stpre/finder.js,在 return 语句处失败
return promise.then(function (adapterPayload) { Ember.assert("您请求了一个" + typeClass.typeClassKey + " id " + id + ",但是适配器的响应没有任何数据", adapterPayload);
return store._adapterRun(function () {
var requestType = get(serializer, 'isNewSerializerAPI') ? 'findRecord' : 'find';
var payload = normalizeResponseHelper(serializer, store, typeClass, adapterPayload, id, requestType);
//TODO Optimize
var record = pushPayload(store, payload);
return record._internalModel;
});
(https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/store/finders.js#L32)
我们在这里遗漏了什么吗?谁能帮我解决这个问题?我已经尝试将版本升级到最新版本,但仍然面临同样的问题。
- 发布在 ember-data-factory-guy 问题中 https://github.com/danielspaniel/ember-data-factory-guy/issues/136
【问题讨论】:
-
您是否正在对响应进行存根处理?
this.store.findRecord('item', params.item_id)向服务器发出请求。 -
是的,它正在向服务器发送请求,但我的 ember-data 存储中有可用的数据,所以希望从那里挑选它。因此没有取消该响应。
-
this.store.findRecord将始终发送请求,即使您的商店中有该请求。如果您不想发送请求,请尝试peekRecord。 -
感谢@vikram7 的回复最后我能够解决它.. 我会将其添加为答案。回复:您的上述评论:参考此emberjs.com/blog/2015/06/18/…
标签: javascript ember.js ember-data ember-qunit