0

我需要运行一个等价的,但在一个事务中: db.GetAll(ctx, datastore.NewQuery("Items").Ancestor(pkey), &itemContainers)

但是该Transaction{}类型似乎没有GetAll()方法。我怎样才能完成这项工作?

4

2 回答 2

1

要在事务中使用查询,您应该将事务附加到查询。例如

q = datastore.NewQuery("Items").Ancestor(pkey).Transaction(tx)
db.Getall(ctx, q, &itemContainers)
于 2021-07-13T16:59:33.257 回答
0

你不需要交易GetAll(),你可以简单地在你的*Client变量上调用它。

事务用于需要一次运行或回滚的原子操作集。例如,如果您有一组需要获取的密钥,GetMulti()则可以调用Transaction类型:https ://pkg.go.dev/cloud.google.com/go/datastore#Transaction.GetMulti

GetAll可以通过单个操作完成,不需要在事务中批处理:https ://pkg.go.dev/cloud.google.com/go/datastore#Client.GetAll

于 2021-07-13T15:26:44.680 回答