[英]Typescript Error “[ts] Expected 0-2 arguments, but got 3.”, in Ionic 3 Framework
[英]Ionic 3. Typescript Map object not being saved to Firebase
我正在使用Ionic 3框架。
我正在嘗試將對象保存到Firebase,但並未保存所有屬性。
保存字符串屬性,但不保存Map和自定義對象(Event)。
以下是具有我想要保存的屬性的對象:
================================================== ===========
export class Room extends WorldObject {
private entityList: Array<Entity>;
private itemList: Array<Item>;
private directionMap: Map<string, number>;
private onEnterEvent: Event;
private onExitEvent: Event;
private actionEventMap: Map<string, Map<string, Event>>;
================================================== ===========
================================================== ===========
export class Event {
private actionScript: string;
private message: string;
================================================== ===========
因此,同樣保存字符串和數組屬性,但“Map”或“Event”類型的屬性不會保存到firebase。
可能是什么問題?
Firebase不喜歡自定義的打字稿對象嗎?
我應該在保存前以某種方式轉換它們嗎? 我不應該這樣做。
任何幫助表示贊賞
該對象應該提供一個toString()
函數來將對象序列化為字符串。 看來他在打字稿中的Map
沒有這樣的方法。
所以我找到了一個解決方法。 我討厭變通辦法! 因為我是最佳實踐的忠實粉絲。 所以,這里......
而不是使用Typescript Map類型,因為它在Firebase中尚不支持,我使用另一種方式創建了一個地圖對象,在這里引用:
export class Room extends WorldObject {
private entityList: Array<Entity>;
private itemList: Array<Item>;
private directionMap: {[key:string]: number};
private onEnterEvent: Event;
private onExitEvent: Event;
private actionEventMap: {[key:string]: {[key:string]: Event}};
而不是使用
let newRoom = Map<string, number>
newRoom.set('north', 1);
我用了:
let newRoom: {[key:string]: number} = {}
newRoom['north'] = 1;
我應該把它封裝在一個類中。 因為最佳實踐很棒。
結果,我能夠將數據保存到firebase。
就這些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.