firebase firestore存在系统
我正在尝试实现一个状态系统,我已经遵循了它的文档。它可以更新我的firestore和实时数据库。但是,当我关闭应用程序时,实时数据库会更新,而firestore不会更新。下面是我的云函数中的示例代码,我假设它执行操作firebase firestore存在系统,firebase,firebase-realtime-database,google-cloud-firestore,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Firestore,Google Cloud Functions,我正在尝试实现一个状态系统,我已经遵循了它的文档。它可以更新我的firestore和实时数据库。但是,当我关闭应用程序时,实时数据库会更新,而firestore不会更新。下面是我的云函数中的示例代码,我假设它执行操作 const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp();
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const firestore = admin.firestore();
exports.onUserStatusChanged = functions.database.ref('/status/{uid}').onUpdate(
async (change, context) => {
const eventStatus = change.after.val();
const userStatusFirestoreRef = firestore.doc(`users/${context.params.uid}`);
const statusSnapshot = await change.after.ref.once('value');
const status = statusSnapshot.val();
console.log(status, eventStatus);
if (status.last_changed > eventStatus.last_changed) {
return null;
}
return userStatusFirestoreRef.set({
online: false,
last_changed: firestore.FieldValue.serverTimestamp(),
}, { merge: true });
});
请编辑问题以描述您调试此函数所做的操作。如果不是你所期望的,它到底在做什么?你说“假设[它]执行了行动”是什么意思?此外,这是您部署的一个云功能。一旦你部署了它,它会在实时数据库更新指定的引用时被触发,我知道你是通过你的应用程序这样做的。我对你的代码做了一些小的更改来测试它,每次触发函数时,两个数据库都会更新。你能给我看看你所做的更改吗。此外,触发器也起作用,但是,当我关闭应用程序时,实时数据库更新为false,而firestore数据库仍处于联机状态。我刚刚根据我的数据调整了您的代码,但更改如下:
firestore.doc(`users/${context.params.uid}`)代码>到firestore.collection('users').doc(eventStatus)代码>,以及firestore.FieldValue.serverTimestamp()到admin.firestore.FieldValue.serverTimestamp()。我知道你用你的应用程序更新实时数据库,这会触发云功能。您是否尝试通过手动修改实时数据库中的值来触发该函数?这将证实我对存在于你的应用程序代码中而不是云函数中的问题的怀疑。请编辑此问题以描述你调试此函数所做的工作。如果不是你所期望的,它到底在做什么?你说“假设[它]执行了行动”是什么意思?此外,这是您部署的一个云功能。一旦你部署了它,它会在实时数据库更新指定的引用时被触发,我知道你是通过你的应用程序这样做的。我对你的代码做了一些小的更改来测试它,每次触发函数时,两个数据库都会更新。你能给我看看你所做的更改吗。此外,触发器也起作用,但是,当我关闭应用程序时,实时数据库更新为false,而firestore数据库仍处于联机状态。我刚刚根据我的数据调整了您的代码,但更改如下:firestore.doc(`users/${context.params.uid}`)代码>到firestore.collection('users').doc(eventStatus)代码>,以及firestore.FieldValue.serverTimestamp()到admin.firestore.FieldValue.serverTimestamp()。我知道你用你的应用程序更新实时数据库,这会触发云功能。您是否尝试通过手动修改实时数据库中的值来触发该函数?这将证实我对存在于你的应用程序代码而不是云功能中的问题的怀疑。