firebase onSnapshot似乎在一段时间后停止工作

t1qtbnec  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(162)

我在一个React Native应用中使用了firestore onSnapshot方法来处理应用中的几组不同的数据,大多数情况下它们都运行良好。然而,一段时间后,可能是应用进入后台并重新唤醒后,onSnapshot方法停止更新数据。
就好像他们已经关机了,有时候他们似乎刚过一段时间就停止工作了,没有应用程序的后台。
如果我再次调用这些方法,那么它们又开始工作了,但这似乎违背了使用它们的目的,我还不如使用普通的get()方法,并在需要时调用它们。
肯定有其他人经历过这种情况,可以帮助吗?

omhiaaxx

omhiaaxx1#

当一个错误发生时,Firebase会调用(可选的)第二个回调函数,你可以把它传递给onSnapshot或一个简单的get函数。

const coleccionRef = database.ref('test');
coleccionRef.on('value', snapshot => {
    snapshot.val();
}, error => {
    console.error(error);
});

您可以检查该错误以了解出了什么问题。

oaxa6hgo

oaxa6hgo2#

我在node上运行的脚本中使用onsnapshot作为firebase客户端时也遇到了同样的问题,我通过在一段时间间隔后或出现错误后重新调用onsnapshot来解决这个问题,在我的例子中是30分钟后。
像这样(火线9):

let onSnapRemove;
function onSnap() {
    onSnapRemove = onSnapshot(coll, {
        next: snap => {
            ...
        },
        error: err => {
            console.log(err);
            onSnapRemove();
            onSnap();
        }
    });
}

onSnap();

function repeat() {
    if (typeof onSnapRemove == 'function') onSnapRemove();
    onSnap();
}
setInterval(() => {
    repeat();
}, 1000 * 60 * 30);

相关问题