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.
}

更新如预期的那样工作,但是,一旦承诺通过,我所拥有的就是undefined。我可以发誓,它曾经返回了实际的条目,并更新了它的值,它不会再这样做了吗?

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

我找不到合适的update()API文档,但我按照本页的说明做了:

要知道您的数据何时提交到Firebase实时数据库服务器,您可以使用Promise。set()和update()都可以返回一个Promise,你可以用它来知道写操作何时提交给数据库。

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

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

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

当操作失败时,承诺将被拒绝。

最新更新