如何在 flutter 中将具有文档 ID 的自定义对象设置为 firestore 中的集合?

how to set custom object with document id to a collection in firestore in flutter?

我用一些字符串变量和另一个 class B 的对象列表定义了一个飞镖 class A。 我在 cloud_firestore 模块中找不到任何方法函数来将 class A 的这个自定义对象设置为集合的文档,即使 Firestore 支持自定义对象。我是否需要将 class A 的所有成员(字符串、列表等)转换为 JSON 格式或任何其他可用的解决方案?

你不能 insert/update 普通的 Dart 模型。首先,您需要将您的对象转化为 JSON 数据。为此,您可以查看 答案。 另外,您可以查看 答案。

如果不方便创建另一个相关自定义集合 class,唯一的选择是自己构建相关 class 实例。

import Player from // player module

class GameState {
  constructor(data) {
    this.players = data.players.map(p => new Player(p))
    // ...
  }

  // flatten GameState into a generic JS map
  // build one of these on Player also
  asFBData() {
    const playerFBData = this.players.map(p => p.asFBData())
    return { playerFBData, ...other_game_state_here }
  }
}

const gameStateConverter = {
  toFirestore: gameState => gameState.asFBData(),
  fromFirestore: (snapshot, options) => new GameState(snapshot.data(options))
}