首页 > 解决方案 > Firebase .update() 返回未定义,它不应该返回更新的对象吗?

问题描述

我有一个简单的更新 Firebase 函数,如下所示:

export default async function updateStuff(firestore, id, data) {
    const stuff = await firestore
        .collection('Stuff')
        .doc(id)
        .update(data)
    
    console.log('updated stuff:', stuff) // Will always be undefined, despite working.
}

更新按预期工作,但是,一旦 Promise 完成,我所拥有的一切都是undefined. 我本可以发誓,它曾经返回使用其更新值更新的实际条目,它不再这样做了吗?

是否可以做一些事情来验证它实际上已经在更新,而无需在更新.get()后进行完全单独的调用?

我找不到合适的update()API 文档,但我按照本页所述进行了操作:

要了解您的数据何时提交到 Firebase 实时数据库服务器,您可以使用 Promise。set() 和 update() 都可以返回一个 Promise,您可以使用它来了解何时将写入提交到数据库。

只是Promise<void>没有关于更新对象的其他信息吗?我可以假设如果失败它会抛出?一旦操作完成,更新 API 必须继续重新获取值,我似乎适得其反。

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


如果您查看 的参考文档DocumentReference.update(),您会看到它返回Promise<void>.

如果您需要更新的数据,则需要get()单独调用。如果您更新多个文档,您可能也需要多次get()调用。

当操作失败时,promise 确实会被拒绝。


推荐阅读