我需要运行一个等价的,但在一个事务中:
db.GetAll(ctx, datastore.NewQuery("Items").Ancestor(pkey), &itemContainers)
但是该Transaction{}
类型似乎没有GetAll()
方法。我怎样才能完成这项工作?
我需要运行一个等价的,但在一个事务中:
db.GetAll(ctx, datastore.NewQuery("Items").Ancestor(pkey), &itemContainers)
但是该Transaction{}
类型似乎没有GetAll()
方法。我怎样才能完成这项工作?
要在事务中使用查询,您应该将事务附加到查询。例如
q = datastore.NewQuery("Items").Ancestor(pkey).Transaction(tx)
db.Getall(ctx, q, &itemContainers)
你不需要交易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