node.js - 事务中的 Google Datastore Transaction API 与 Datastore API

标签 node.js google-app-engine transactions google-cloud-datastore

两天来我一直在与 Google Cloud Datastore 事务作斗争。

我不确定在 Google 数据存储区事务中是否应该使用 datastore.save 还是 transaction.save。

常用代码:

const datastore = new Datastore();
const transaction = datastore.transaction();

场景1:

transaction.run()
    datastore.save(x)
transaction.commit()

场景 2:

transaction.run()
    transaction.save(x)
transaction.commit()

文档中有一些示例,其中他们在 transaction.run 和 transaction.commit 中同时使用事务方法和数据存储方法,但我无法确定是否有必要。

Datastore.save 对我来说会更容易,但考虑到有一个方法 transaction.save,这似乎很奇怪。

最佳答案

如果我错了,请纠正我,这是我目前的理解

如果您想在事务中写入数据存储,您需要使用事务对象来执行此操作,即 transaction.save 和 transaction.delete; datastore.save 和 datastore.delete 不会出现在事务中,即使您将它们放入事务 block 中也是如此。

如果您想从事务中的数据存储区读取数据,事务和数据存储区对象都可以正常工作。两者都将根据事务开始时拍摄的快照进行读取。

关于node.js - 事务中的 Google Datastore Transaction API 与 Datastore API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48677571/

相关文章:

jquery - 根据用户角色隐藏带有 Handlebars 的元素

android - 最简单的安全 Android 服务器后端

django - 期待来自 Google Storage 的状态 [201]。但是得到状态 302

nhibernate - 用于测试的嵌套事务

asp.net-mvc-3 - Dbcontext 中的 .NET MVC 3 回滚

node.js - 如何使用 passport.js 身份验证从 facebook 获取个人资料数据?

javascript - "Location " Node/javascript 中的属性

python - Google App Engine - 将 key 存储到ndb KeyProperty中

spring - 匹配通配符是严格的,但找不到元素 'tx:annotation-driven' 的声明

javascript - node.js https 获取请求