Google cloud firestore 数据存储模式下的新谷歌云Firestore

Google cloud firestore 数据存储模式下的新谷歌云Firestore,google-cloud-firestore,google-cloud-datastore,Google Cloud Firestore,Google Cloud Datastore,我很难理解在新的GoogleFireStore数据存储模式下查询是如何处理事务的(我已经使用了以前版本的数据存储) 根据本文,以下是在数据存储模式下使用Google Cloud Direbase的好处: 最终的一致性,所有云数据存储查询都变得非常一致 交易不再限于25个实体组 对实体组的写入不再限于每秒1次 由于查询现在具有很强的一致性,因此我假设在事务中使用非祖先查询是可以的,但在本文中,则相反: 事务内部的查询必须是祖先查询 经过深思熟虑,我决定试着看看我的怀疑是否正确: query :

我很难理解在新的GoogleFireStore数据存储模式下查询是如何处理事务的(我已经使用了以前版本的数据存储)

根据本文,以下是在数据存储模式下使用Google Cloud Direbase的好处:

  • 最终的一致性,所有云数据存储查询都变得非常一致
  • 交易不再限于25个实体组
  • 对实体组的写入不再限于每秒1次
由于查询现在具有很强的一致性,因此我假设在事务中使用非祖先查询是可以的,但在本文中,则相反:

事务内部的查询必须是祖先查询

经过深思熟虑,我决定试着看看我的怀疑是否正确:

query := datastore.NewQuery("Entity").Filter("indexed_property =", s)
ctx := context.Background()
tx, err := client.NewTransaction(ctx, datastore.ReadOnly)
if err != nil {
  fmt.Pritnln(err)
}
query = query.Transaction(tx)
it := d.client.Run(ctx, query)
e := new(Entity)
_, err = it.Next(e)
if err != nil || err == iterator.Done {
  fmt.Println(err)
}

令我惊讶的是,它工作得完美无缺。那么这是一个错误还是正确的行为?

您是正确的。这是文档中的一个bug。数据存储模式下的Cloud Firestore取消了事务内部查询必须是祖先查询的限制

该页面现在已更新。为这一混乱道歉