好的,所以我是Ember的新手,所以請耐心等待。Ember Data如何通過存儲的模型數據實例寫入
我有一個Ember應用程序正在與不符合JSONAPI標準的API進行通信,因此我已經開始編寫自己的序列化程序以便使用Ember數據。但是我發現,當我向同一資源發出多個請求時,數據在寫入商店時遇到問題。連續請求相同的資源總是以下面的錯誤響應:
類型錯誤:無法轉換對象原始值
從我有限的理解,意味着我發送到存儲中的數據是被視爲一個字符串。
在我的申請途徑我已經寫了findAll
我的模式「掛牌項目」,像這樣:
model: function() {
return this.store.findAll('listing-item');
},
在嵌套「用戶」的路線,當我做任何類型的請求爲listing-用於返回列表項數據的陣列響應(查詢的findAll)項數據,我得到:
TypeError: Cannot convert object to primitive value
at EmptyObject.SETTER_FUNCTION [as title] (ember.debug.js:20672)
at assign (<anonymous>)
at InternalModel.setupData (internal-model.js:244)
at Class._load (store.js:1728)
at Class._pushInternalModel (store.js:2055)
at Class._push (store.js:1995)
at finders.js:141
at Backburner.run (ember.debug.js:720)
at Class._adapterRun (store.js:2253)
at finders.js:139
(名稱是我上市項目模型中的字段)。
正如我前面提到的,我的API不符合JSONAPI的標準,所以我寫了一個上市項目串行像這樣:
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
normalizeArrayResponse(store, primaryModelClass, payload) {
payload.data = [];
payload.listing_item._data.forEach(this.formatListingItemArray, payload.data);
delete payload.listing_item;
return payload;
},
formatListingItemArray(listingItem) {
this.push({
type: "listing-item",
id: listingItem.id,
attributes: {
title: listingItem.title,
description: listingItem.description,
buy_now_price: listingItem.buy_now_price,
created_at: listingItem.created_at,
category_id: listingItem.category_id,
subcategory_id: listingItem.subcategory_id,
identity_id: listingItem.identity_id,
listing_number: listingItem.listing_number,
brand_new: listingItem.brand_new,
sold: listingItem.sold,
},
});
},
});
,所以我想我的問題是,什麼是灰燼數據做與我的數據對象發生此錯誤,以及我的數據格式化爲Ember數據使用時可能會做錯什麼。
UPDATES:
它看起來好像只有前3個字段導致此錯誤發生。如果我在序列化程序中註釋掉屬性「標題」,「描述」和「buy_now_price」,我不會收到此錯誤。此外,似乎只有在導航到路由時纔會出現這種情況,如果我在應用程序加載時處於/用戶路由中,兩個請求都按預期工作。
好了,所以我一直在爬行通過餘燼數據的代碼,發現在內部model.js文件中,有一個設置功能,着眼於在店裏的當前屬性,並將它們與傳遞的數據來自序列化程序。然後它執行assign()將序列化器新數據複製到商店對象。然而由於某種原因,我的商店對象似乎有一組「getter」和「setter」函數,它們從存儲中返回有問題的字段(標題,描述和buy_now_price)。我現在需要知道的是,爲什麼這些功能會在騎行中出現,我爲此做了些什麼?
Picture of getters/setters on ember-data object
在此先感謝,讓我知道,如果有任何需要我,爲了提供更好的背景下,以提供更多的信息。