【发布时间】:2021-09-22 21:17:41
【问题描述】:
我正在开发 Flutter 应用程序,用户可以在其中保存多个地址。以前我使用实时数据库,我更容易将数据推送到具有唯一 ID 的任何孩子中,但出于某种原因,我改为使用 Firestore,并且希望通过 Firestore 实现相同的目标。因此,我生成了 UUID 来创建唯一 ID 以附加到 user_address
这就是我想要的
user_address 看起来像这样
这就是它在 Firestore 中的保存方式
所以我的问题是我如何附加具有唯一 ID 的数据,我必须在 users 字段内创建一个集合还是上述可能?
下面是我尝试set 和update 甚至用户FieldValue.arrayUnion(userServiceAddress) 的代码,但没有得到想要的结果
var uuid = Uuid();
var fireStoreUserRef =
await FirebaseFirestore.instance.collection('users').doc(id);
Map locationMap = {
'latitude': myPosition.latitude,
'longitude': myPosition.longitude,
};
var userServiceAddress = <String, dynamic>{
uuid.v4(): {
'complete_address': completedAddressController.text,
'floor_option': floorController.text,
'how_to_reach': howtoreachController.text,
'location_type': locationTag,
'saved_date': DateTime.now().toString(),
'user_geo_location': locationMap,
'placeId': addressId
}
};
await fireStoreUserRef.update({'user_address': userServiceAddress});
如果我使用set 和update,那么整个数据将被替换为未附加的新值,因此创建一个集合是这里唯一的解决方案,如果我创建一个集合,我会遇到什么问题吗?
【问题讨论】:
标签: firebase flutter google-cloud-firestore