如何在 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))
}
我用一些字符串变量和另一个 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))
}