Javascript Firebase firestore-数据必须是对象,但它是:自定义对象
我将Firestore与实时数据库结合使用,以便为我的应用程序提供一个用户状态系统 更新:我关注的文章 在其中一种方法中,我在这里使用以下代码:Javascript Firebase firestore-数据必须是对象,但它是:自定义对象,javascript,firebase,firebase-realtime-database,google-cloud-firestore,Javascript,Firebase,Firebase Realtime Database,Google Cloud Firestore,我将Firestore与实时数据库结合使用,以便为我的应用程序提供一个用户状态系统 更新:我关注的文章 在其中一种方法中,我在这里使用以下代码: const usersRef = this.$fireStore.collection('users').doc(uid) const whoIsOnlineRef = this.$fireDb.ref('.info/connected') whoIsOnlineRef.on('value', (snapshot) => { this
const usersRef = this.$fireStore.collection('users').doc(uid)
const whoIsOnlineRef = this.$fireDb.ref('.info/connected')
whoIsOnlineRef.on('value', (snapshot) => {
this.$fireDb.ref(`/status/${uid}`)
.onDisconnect()
.set('offline')
.then(() => {
usersRef.set({ online: true }, { merge: true })
this.$fireDb.ref(`/status/${uid}`).set('online')
})
})
然而,set方法给了我标题中提到的错误,我不太明白为什么。我只是将一个javascript对象传递给.set方法,从技术上讲,这应该是可行的
你能发现代码有什么问题吗?看起来这不起作用的原因是代码在SSR应用程序的服务器上运行 我把同样的逻辑移到了浏览器上,它开始工作得很好。我仍然不明白为什么这在服务器上不起作用,因为在一天结束时,我仍然在向.set()方法传递一个简单的js对象
无论哪种方式,您都可以我猜您无法在onDisconnect处理程序中更改Firestore。当连接断开时,该处理程序将有效地将RTDB中的一些更改排队。RTDB对Firestore一无所知。您可能想阅读本指南:让我再给您一些上下文,否则可能会混淆。我确实读过,然后也谈到了这一点:据我所知,它应该可以工作。我不明白为什么你不使用云函数来代理从RTDB到Firestore的变化。您试图仅在客户端上执行此操作,这将不起作用。