您好,并提前感谢您的帮助。 我正在构建一个跟踪离子应用的总线。我正在使用firebase存储总线的位置。每隔几秒钟,我就会将新坐标存储到数据库中。
要查看总线的当前位置,我将检索数据库中最后记录的坐标。出于某种原因,如果我同时更新数据库并从数据库中检索最后一条记录,我会得到以下错误。我怀疑错误是由于用户请求最后一条记录时最后一条记录的变化。请问如何以不需要我订阅结果的方式检索最后一条记录。
我的代码:
getLastLocation(){
return this.db.list<GPS>(this.baseURL,ref => ref.limitToLast(1)).valueChanges();
}
getSpecific(){
this.firebaseService.getLastLocation()
.subscribe((resp)=>{
this.buslon = resp[0].longitude;
this.buslat= resp[0].latitude;
},
(err)=>{
console.log(err);
})
}
我的错误:
core.es5.js:1020 ERROR TypeError: Cannot read property 'longitude' of undefined
at SafeSubscriber._next (driverstops.ts:54)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
at SafeSubscriber.next (Subscriber.js:185)
at Subscriber._next (Subscriber.js:125)
at Subscriber.next (Subscriber.js:89)
at MapSubscriber._next (map.js:83)
at MapSubscriber.Subscriber.next (Subscriber.js:89)
at DistinctUntilChangedSubscriber._next (distinctUntilChanged.js:103)
at DistinctUntilChangedSubscriber.Subscriber.next (Subscriber.js:89)
at SwitchMapSubscriber.notifyNext (switchMap.js:124)
答案 0 :(得分:0)
首先,您应该找到resp [0]未定义的原因和时间。 如果您怀疑同时更新情况,此文档对您有所帮助:https://firebase.google.com/docs/firestore/manage-data/transactions