更新 Firestore 中数组的 Map 数据 - Flutter
Update the Map data of an Array inside Firestore - Flutter
我一直在尝试创建一个由 Google 的 Firebase 提供支持的演示“Schedule-App”,但我在使用 Map 更新 Array 的特定值时遇到了一些困难Firestore 一侧的值。
如下图所示,我们要实现的是onButtonPress
,这个具体值待更新。
我创建了一个数据流并通过 StreamProvider
进行管理。
StreamProvider<DocumentSnapshot>.value(
value: FirebaseFirestore.instance.collection('schedule').doc(FirebaseAuth.instance.currentUser.uid).snapshots(),
我正在使用以下方法来更新 Array 的数据,但它不起作用。
Future<void> updateUserData(int index, String title, String text, int hour, bool check) async {
DocumentReference snapshots = FirebaseFirestore.instance.collection('schedule').doc(FirebaseAuth.instance.currentUser.uid);
snapshots.update({
['standard_schedule'][index]: {'title': title, 'text': text, 'hour': hour, 'check': check}
});
}
我应该对上述方法做哪些更改,以便每次按下按钮时更新 bool 值?
============================================= ==
解决方案(2020 年 10 月 24 日):
Firestore 不提供更新索引处数组元素的方法。您必须读取整个文档,修改内存中的数组,然后将整个数组写回到文档。
Firestore 不提供更新索引 处的数组元素的方法。您必须读取整个文档,修改内存中的数组,然后将整个数组写回文档。
这是我的解决方案。
var array=[{'title': title, 'text': text, 'hour': hour, 'check': check}];
snapshots.update({'standard_schedule': FieldValue.arrayUnion(scores)});
我一直在尝试创建一个由 Google 的 Firebase 提供支持的演示“Schedule-App”,但我在使用 Map 更新 Array 的特定值时遇到了一些困难Firestore 一侧的值。
如下图所示,我们要实现的是onButtonPress
,这个具体值待更新。
我创建了一个数据流并通过 StreamProvider
进行管理。
StreamProvider<DocumentSnapshot>.value(
value: FirebaseFirestore.instance.collection('schedule').doc(FirebaseAuth.instance.currentUser.uid).snapshots(),
我正在使用以下方法来更新 Array 的数据,但它不起作用。
Future<void> updateUserData(int index, String title, String text, int hour, bool check) async {
DocumentReference snapshots = FirebaseFirestore.instance.collection('schedule').doc(FirebaseAuth.instance.currentUser.uid);
snapshots.update({
['standard_schedule'][index]: {'title': title, 'text': text, 'hour': hour, 'check': check}
});
}
我应该对上述方法做哪些更改,以便每次按下按钮时更新 bool 值?
============================================= ==
解决方案(2020 年 10 月 24 日): Firestore 不提供更新索引处数组元素的方法。您必须读取整个文档,修改内存中的数组,然后将整个数组写回到文档。
Firestore 不提供更新索引 处的数组元素的方法。您必须读取整个文档,修改内存中的数组,然后将整个数组写回文档。
这是我的解决方案。
var array=[{'title': title, 'text': text, 'hour': hour, 'check': check}];
snapshots.update({'standard_schedule': FieldValue.arrayUnion(scores)});