Ionic - Firebase(如何在更新数据库时从数据库获取最后一条记录)

时间:2018-03-11 22:38:07

标签: angular firebase ionic-framework observable subscribe

您好,并提前感谢您的帮助。 我正在构建一个跟踪离子应用的总线。我正在使用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)

1 个答案:

答案 0 :(得分:0)

首先,您应该找到resp [0]未定义的原因和时间。 如果您怀疑同时更新情况,此文档对您有所帮助:https://firebase.google.com/docs/firestore/manage-data/transactions