Trong ứng dụng ember của chúng tôi, chúng tôi đang sử dụng các phiên bản sau của dữ liệu ember và dữ liệu ember-factory-factory-guy.findRecord cho lỗi "Không thể đọc thuộc tính '_internalModel' không xác định"
package.json
"ember-cli": "^1.13.8",
"ember-data": "1.13.9",
"ember-data-factory-guy": "1.13.10",
Lưu ý: chúng tôi đang sử dụng hoạt động mô hình bộ chuyển đổi, chưa di cư đến adapter json-api.
import ActiveModelAdapter from 'active-model-adapter';
export default ActiveModelAdapter.extend({
Route: item.js
export default Ember.Route.extend(({
model(params) {
return this.store.findRecord('item', params.item_id);
}
});
nó làm việc tốt trong chế độ phát triển, nhưng khi chạy trường hợp thử nghiệm, đang phải đối mặt với vấn đề sau đây:
Test Case cho "màn hình đơn mục "không thành công với lỗi sau:
{
"message": "Cannot read property '_internalModel' of undefined",
"name": "TypeError"
}
ember dữ liệu/lib/system/stpre/finder.js, thất bại tại return
tuyên bố
trở promise.then (function (adapterPayload) { Ember.assert ("Bạn đã yêu cầu cho một" + typeClass. typeClassKey + "với id" + id + ", nhưng phản hồi của bộ điều hợp không có bất kỳ dữ liệu nào", 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)
Có phải chúng ta thiếu bất cứ điều gì ở đây? Bất cứ ai có thể vui lòng giúp tôi giải quyết vấn đề này? Tôi đã thử bằng cách nâng cấp phiên bản lên phiên bản mới nhất nhưng vẫn gặp phải sự cố tương tự.
- gửi trong các vấn đề của ember-data-nhà máy-anh chàng https://github.com/danielspaniel/ember-data-factory-guy/issues/136
Bạn đang stubbing phản ứng? 'this.store.findRecord ('item', params.item_id)' đưa ra một yêu cầu tới máy chủ. – vikram7
Vâng, nó đang gửi yêu cầu đến máy chủ, nhưng tôi có dữ liệu đó trong kho lưu trữ dữ liệu ember của tôi, vì vậy tôi đã mong đợi để chọn nó từ đó. Do đó không có phản ứng đó. – Swati
'this.store.findRecord' sẽ luôn gửi yêu cầu ngay cả khi bạn có yêu cầu trong cửa hàng của mình. Bạn nên thử 'peekRecord' nếu bạn không muốn gửi yêu cầu. – vikram7