在没有transaction.get()的情况下启动firestore事务

yno*_*tu. 6 javascript promise firebase google-cloud-firestore

我想将一个文档从一个集合移动到另一个集合.因此,我想使用事务来创建新文档和2.删除旧文档.

我可以做以下工作:

db.runTransaction((transaction) => {
return transaction.get(docRef)
  .then(() => transaction.set(newDocRef.doc(docId), doc))
  .then(() => transaction.delete(docRef));
Run Code Online (Sandbox Code Playgroud)

我怎样才能重写这段代码,transaction.set()而不是transaction.get()因为我在这种情况下已经有了doc,所以它是多余的.区别在于transaction.get()返回一个promise但transaction.set()返回一个transaction.

小智 4

如果您不想阅读文档,则应该使用批量写入。

Firestore 文档:https://firebase.google.com/docs/firestore/manage-data/transactions

批量写入

如果不需要读取操作集中的任何文档,则可以将多个写入操作作为包含 set()、update() 或 delete() 操作的任意组合的单个批处理来执行。一批写入以原子方式完成,并且可以写入多个文档。

  • 这并不完全正确。如果启用了持久性,您可能希望使用事务让它在没有连接的情况下失败。这是完全有可能的。 (5认同)