尝试使用角度云火库跟踪不同用户的地理位置时获取 documentId 的问题



我是Firebase云Firestore的新手。我正在尝试做的是使用谷歌地图API跟踪登录用户的地理位置。 有很多问题,但最令人困惑的是如何获取自动生成的ducument id以及如何自动设置文档ID?这是代码的一部分:

updateGeolocation(uuid,lat,lng){
if(localStorage.getItem('userLocations')){
this.locRef.doc().update({
deviceID: uuid,
lat: lat,
lng: lng
})
JSON.parse(localStorage.getItem('userLocations'))
.then(function() {
console.log("Document successfully updated.");
})
.catch(function(error) {
console.error("Error updating document: ", error);
});
}else{
let newData = this.locRef.doc().set({
deviceID: uuid,
lat: lat,
lng: lng
},{merge: true});
localStorage.setItem('userLocations', JSON.stringify(newData));
JSON.parse(localStorage.getItem('userLocations'));
}
}

例如,我不知道我应该在"this.locRef.doc(???("中输入什么。也许我可以在其中输入"uuid",但是当我使用导航器时,它是"空"并且失败了。我查看了官方文档,看起来我们可以将其留空(doc(((,它将生成一个自动 id,但这样我得到了错误。有人可以帮我吗?

文档非常清楚:

使用 set(( 创建文档时,必须为 要创建的文档

但有时文档没有有意义的 ID,它是 更方便让云飞恢复为您自动生成 ID。 您可以通过调用 add(( 来执行此操作

然后关于update

更新文档的某些字段而不覆盖整个字段 文档,使用 update(( 方法

(对不存在的文档调用更新将失败(

看起来您正在尝试跟踪每个用户的单个位置,并且您的用户由uuid标识。在这种情况下,最有意义的是使用uuid值作为这些文档的 ID,而不是让 Firestore 为其生成自动 ID。

像这样:

updateGeolocation(uuid,lat,lng){
if(localStorage.getItem('userLocations')){
this.locRef.doc(uuid).update({
deviceID: uuid,
lat: lat,
lng: lng
})
JSON.parse(localStorage.getItem('userLocations'))
.then(function() {
console.log("Document successfully updated.");
})
.catch(function(error) {
console.error("Error updating document: ", error);
});
}else{
let newData = this.locRef.doc(uuid).set({
deviceID: uuid,
lat: lat,
lng: lng
},{merge: true});
localStorage.setItem('userLocations', JSON.stringify(newData));
JSON.parse(localStorage.getItem('userLocations'));
}
}

有关使用 Cloud Firestore 获取数据的详细信息,您可以查看使用 Cloud Firestore 获取数据文档页面。

相关内容

  • 没有找到相关文章

最新更新