Google cloud firestore 如果子集合中的文档被修改,事务处理是否会失败? 我们考虑下面的例子: 从'firebase admin'导入{firestore}; const userCollectionRef=firestore().collection('users'); const setUserData=(用户ID,数据)=>{ 返回firestore().runTransaction(异步trx=>{ const userDocRef=userCollectionRef.doc(userId); 返回trx.set(userDocRef,数据); }); }; const doSomethingElse=(用户ID、文档、数据)=>{ 返回userCollectionRef .doc(用户ID) .集合(“子集合”) .doc(doc) .设置(数据); };

Google cloud firestore 如果子集合中的文档被修改,事务处理是否会失败? 我们考虑下面的例子: 从'firebase admin'导入{firestore}; const userCollectionRef=firestore().collection('users'); const setUserData=(用户ID,数据)=>{ 返回firestore().runTransaction(异步trx=>{ const userDocRef=userCollectionRef.doc(userId); 返回trx.set(userDocRef,数据); }); }; const doSomethingElse=(用户ID、文档、数据)=>{ 返回userCollectionRef .doc(用户ID) .集合(“子集合”) .doc(doc) .设置(数据); };,google-cloud-firestore,transactions,Google Cloud Firestore,Transactions,如果我调用setUserData(123,someData)并且当此函数正在运行时,doSomethingElse(123,'someDoc',someOtherData)函数被调用-事务是否会因为子集合中的文档被修改而失败 基于这些文档,我假设只有在调用setUserData过程中修改user/123文档时,事务才会失败,但对user/123/subCollection/someDoc文档的修改不会导致事务失败。不过我不确定,因为我对这一点不是很清楚。它只是说: 事务读取在事务外部修改的文档。

如果我调用
setUserData(123,someData)并且当此函数正在运行时,
doSomethingElse(123,'someDoc',someOtherData)
函数被调用-事务是否会因为子集合中的文档被修改而失败

基于这些文档,我假设只有在调用
setUserData
过程中修改
user/123
文档时,事务才会失败,但对
user/123/subCollection/someDoc
文档的修改不会导致事务失败。不过我不确定,因为我对这一点不是很清楚。它只是说:

事务读取在事务外部修改的文档。在这种情况下,事务将自动再次运行。事务重试次数有限

虽然我不“知道”答案,但我可以说文档及其子集合中的文档是完全独立的-在您的
user/123/subCollection/someDoc
示例中,文档
user/123
仅用作
user/123/subCollection/someDoc
路径/索引的一部分-它们之间没有其他关系。事实上,可以删除文档
user/123
,而
user/123/subCollection/someDoc
的路径将保持有效(它在Firebase控制台中显示为斜体路径)

而我不“知道”答案,我可以说文档及其子集合中的文档是完全独立的-在您的
user/123/subCollection/someDoc
示例中,文档
user/123
仅用作
user/123/subCollection/someDoc
的路径/索引的一部分-它们之间没有其他关系。事实上,可以删除文档
user/123
,并且
user/123/subCollection/someDoc
的路径将保持有效(它在Firebase控制台中显示为斜体路径)

,而我不“知道”答案,我可以说文档及其子集合中的文档是完全独立的—在您的user/123/subCollection/someDoc示例中,文档123仅用作“someDoc”的路径/索引的一部分—它们之间没有其他关系。事实上,文档user/123可以被删除,而user/123/subCollection/someDoc的路径将保持有效(它在Firebase控制台中显示为斜体路径),虽然我不“知道”答案,但我可以说文档和它们的子集合中的文档是完全独立的-在您的user/123/subCollection/someDoc示例中,文档123仅用作“someDoc”路径/索引的一部分-它们之间没有其他关系。事实上,可以删除文档user/123,并且指向user/123/subCollection/someDoc的路径将保持有效(它在Firebase控制台中显示为斜体路径)