簡體   English   中英

Ionic 3. Typescript Map對象未保存到Firebase

[英]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中尚不支持,我使用另一種方式創建了一個地圖對象,在這里引用:

如何在TypeScript中為對象動態分配屬性?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM