gpt4 book ai didi

javascript - Cloud Firestore 可以与 .get() 一起正常工作,但不能与使用 next.js 的 .onSnapshot() 一起工作

转载 作者:行者123 更新时间:2023-11-30 19:54:46 24 4
gpt4 key购买 nike

我在使用 next.js 和 Firebase 的 Cloud Firestore 时遇到了一些问题,我不是很了解,但基本上这是可行的:

export async function fetchBroadcasts() {
const db = await loadDB();
const firestore = db.firestore();
const settings = { timestampsInSnapshots: true };
firestore.settings(settings);

return await firestore.collection('broadcasts').doc('message').get().then(doc => ({ broadcast: doc.data() }));
}

这不是:

export async function fetchBroadcasts() {
const db = await loadDB();
const firestore = db.firestore();
const settings = { timestampsInSnapshots: true };
firestore.settings(settings);

return await firestore.collection('broadcasts').doc('message').onSnapshot(doc => ({ broadcast: doc.data() }));
}

我无法弄清楚为什么第二个选项不起作用,因为我基本上遵循 documentation .

在我的 index.js 页面上我有这个:

static async getInitialProps() {
return fetchBroadcasts();
}

最佳答案

onSnapshot不返回 promise ,因此您不能 await 它。正如您从链接的 API 文档中看到的那样,它返回一个函数,当您想要停止刚刚添加的监听器时调用该函数。

当您想要在一个文档上设置一个持续接收该文档更改的持久监听器时,您可以使用 onSnapshot。当您想要该文档的单个快照时,您可以使用 get

关于javascript - Cloud Firestore 可以与 .get() 一起正常工作,但不能与使用 next.js 的 .onSnapshot() 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54115697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com