Firestore 如何处理涉及查询的事务

问题描述 投票:0回答:1

我正在处理 Cloud Firestore 事务,并试图了解 Firestore(服务器客户端库)如何处理涉及查询的事务。具体来说,当事务执行查询而不是直接获取单个文档时的“锁定”行为。

事务是否锁定从中进行查询的整个集合(或集合组),还是仅锁定查询返回的特定文档?

示例(NodeJs):

const db = admin.firestore();

const fireQuery = db.collectionGroup('my-collection')
                    .where('role', '==', 'user');

await db.runTransaction(async transaction => {
  // Query documents and lock them while performing the update.
  const querySnap = await transaction.get(fireQuery);

  // Perform write operations on the retrieved documents...
}

如果只锁定查询返回的文档,考虑到查询结果可能在执行查询之前才知道,Firestore 如何确定提前锁定哪些文档?

firebase google-cloud-firestore google-cloud-functions
1个回答
0
投票

事务是否锁定从中进行查询的整个集合(或集合组)

没有。

还是只锁定查询返回的特定文档?

是的。 您应该注意,参与单个批次或事务的文档数量限制为 500 个。 如果查询返回的值超过这个值,将会导致错误。

© www.soinside.com 2019 - 2024. All rights reserved.