【问题标题】:Ionic 3. Typescript Map object not being saved to FirebaseIonic 3. Typescript Map 对象未保存到 Firebase
【发布时间】:2017-12-01 08:45:44
【问题描述】:

我正在使用 Ionic 3 框架。

我正在尝试将对象保存到 Firebase,但并非所有属性都已保存。

字符串属性已保存,但地图和自定义对象(事件)未保存。

以下是我要保存的具有属性的对象:

================================================ ===============

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 不喜欢自定义 typescript 对象吗?

我应该在保存之前以某种方式转换它们吗?我不应该这样做。

感谢任何帮助

【问题讨论】:

    标签: angular typescript firebase ionic-framework ionic3


    【解决方案1】:

    所以我找到了解决方法。我讨厌变通方法!因为我是最佳实践的忠实拥护者。所以,就这样吧……

    我没有使用 Typescript Map 类型,因为它在 Firebase 中尚不支持,所以我使用另一种方式创建了一个地图对象,在此引用:

    How do I dynamically assign properties to an object in 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&lt;string, number&gt;

    newRoom.set('north', 1);

    我用过:

    let newRoom: {[key:string]: number} = {}
    newRoom['north'] = 1;
    

    我可能应该将它封装在一个类中。因为最佳实践很棒。

    因此,我能够将数据持久化到 firebase。

    就是这样。

    【讨论】:

      【解决方案2】:

      对象应该提供一个toString() 函数来将对象序列化为字符串。看来他Map in typescript 没有这个方法。

      【讨论】:

      • 那么我应该创建扩展 Map 并添加 toString() 的 iwn 自定义类吗?
      • 承办人:只有你能找到答案。
      • 弗雷迪李:承办人?没门!?你没有退休吗?!?
      • 承办者:(窒息)
      • Undertaker:因为您希望朝九晚五并创建价值百万美元的应用程序的愿望还不够强烈......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 2020-07-03
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      相关资源
      最近更新 更多