Firebase使用node.js更新-我需要等待吗?

Firebase使用node.js更新-我需要等待吗?,node.js,firebase,firebase-realtime-database,backend,Node.js,Firebase,Firebase Realtime Database,Backend,场景: 某些代码正在侦听集合上的更改。当一个发生时,它进行一些计算并更新集合B A中的变化间隔时间:20-50ms。 实际计算时间:20-30ms。 向firebase发送更新的往返时间:250-300毫秒 代码是这样的: const runUpdates = async (snapshot) => { const inputData = snapshot && snapshot.exists() && snapshot.val() || undefin

场景:

某些代码正在侦听集合上的更改。当一个发生时,它进行一些计算并更新集合B

A中的变化间隔时间:20-50ms。 实际计算时间:20-30ms。 向firebase发送更新的往返时间:250-300毫秒

代码是这样的:

const runUpdates = async (snapshot) => {
  const inputData = snapshot && snapshot.exists() && snapshot.val() || undefined
  if (inputData) {
    const calculatedData = calculateStuff(inputData)
    await firebase.database().ref().update({ 'collectionB': calculatedData })
  }
}

firebase.database().ref('collectionA').on('value', runUpdates)
我正在使用Firebase实时数据库

实际问题:

firebase软件包(使用本地缓存或任何其他必要手段)是否确保更新将在firebase中按照我在代码中完成的相同顺序进行,或者我是否需要等待每次更新完成,然后才能进行下一次计算和更新

更多详细信息:

对于存在触发事件但计算/更新尚未完成的情况,存在适当的机制。我完全忽略了这一点或清晰性

我正在尝试改进这段代码,在许多情况下,计算时间似乎相对较短,但我需要等待firebase的响应来开始下一次计算

我被告知firebase有一个本地缓存(服务器端),我的firebase update命令实际上在本地更新该缓存(因此是“立即的”),然后将更改传播到firebase本身。在确保序列的同时,也会传播任何顺序更新


(不用说,我试着在文档等中查找这些信息)

对实时数据库的查询通过单个套接字连接进行管道化。结果将按照发出查询的顺序传递

如果您需要知道写入结果何时完全提交到服务器,则需要注意
update()
返回的承诺。只有在服务器上完成写操作后,而不是在本地可以进行更改时,该承诺才会实现


无论您是使用
等待
还是
然后
遵守该承诺都不重要。无论哪种方式,您都会知道更新的结果。

您使用的是哪种Firebase产品(实时数据库?Firestore?)?如果您展示更多实际使用上述产品的代码,并解释您正在使用的一系列调用的具体行为,也可能会有所帮助。@DougStevenson-我使用的是实时数据库(也添加在问题中)。关于实际代码,我将尝试更好地解释正在发生的事情。谢谢,谢谢!你知道我在哪里可以找到这方面的相关文档吗?你有什么理由不应该等待
更新操作吗?@Eitank我的意见是,你应该从相反的方向考虑。如果你打算做一些事情,只需要写代码来关注承诺的结果。如果您不需要结果,那么添加额外的代码是没有帮助的,并且可能会使该代码的读者感到困惑。@DougStevenson因此,基本上,如果我除了记录之外没有做任何其他事情,那么我就不应该等待更新的承诺了?如果我理解你的答案。@Eitank,所有返回承诺的函数都是一样的。不要编写不必要的代码。只有在有特定原因时才使用wait。