我有一个简单的更新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()
调用。
当操作失败时,承诺将被拒绝。