【发布时间】:2019-10-05 15:41:41
【问题描述】:
我正在尝试通过存储来自谷歌位置服务的 getLocation 的结果来将用户位置保存在 Firebase 中。
当我使用以下代码时:
Lat_Coordinate = location.getLatitude();
Lon_Coordinate = location.getLongitude();
Map<String, Object> user_location = new HashMap<>();
user_location.put( "Lat", Lat_Coordinate );
user_location.put( "Lon", Lon_Coordinate );
db.collection( "Users" ).document( auth.getUid() ).collection( "Location" ).add( user_location );
它不断将文档添加到 Location 集合中。但是,我的目标始终是只保留一份位置文件,这将是最后的信息。
有没有办法覆盖已经存在的文档而不是添加一个新文档?
我确定有一种方法可以删除集合然后创建一个新集合,但我认为它的操作太多。
谢谢
解决方案:
我最终所做的是使用 auth.getUID 再次创建一个具有已知 ID 的文档并将位置存储在其中。由于 ID 始终相同,它会覆盖文档:
db.collection( "Users" ).document( auth.getUid() ).collection( "Location" ).document(auth.getUid()).set( user_location );
【问题讨论】:
-
您不需要嵌套位置,然后只需在内部使用属性或在嵌套位置内使用具有固定文档 ID 的文档
-
是的,这就是我所做的,只是添加了一个带有 auth.getUid 的文档。谢谢
-
@cutiko 您是否想提供一个稍微更广泛的相同信息版本作为答案,以便我们对其进行投票(Ben 可以接受)?
-
很高兴帮助@puf
标签: javascript firebase google-cloud-firestore