我正在使用nodejs联系google数据存储区。这是我的代码:
dataset.runInTransaction(function(transaction, done,err) {
// From the `transaction` object, execute dataset methods as usual.
// Call `done` when you're ready to commit all of the changes.
transaction.save(entities, function(err) {
if(err){
console.log("ERROR TRNASCTION");
transaction.rollback(done);
return;
}else{
console.log("TRANSACTION SUCCESS!");
done();
}
});
});
如果保存不成功,我希望事务回滚,如果是,我希望它提交。我面临的问题是它们似乎都没有运行,只是控制台上没有输出。没有任何东西被发送到我的数据库所以我假设至少'if(错误)'条件会运行,但事实并非如此。我是glcoud的新手,所以我不确定我在这里做错了什么?我正在https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.26.0/datastore/transaction?method=save跟踪文档。
答案 0 :(得分:1)
在交易环境中,save
方法实际上并不需要回调。您要保存的内容排队等候,直到您拨打done()
。调用done
将提交事务。
然后,您可以在传递给runInTransaction
的第二个函数中处理提交操作中的错误。有关此示例,请参阅https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.26.0/datastore/dataset?method=runInTransaction。
-
只是提及这一点,因为它与回滚部分有关:https://github.com/GoogleCloudPlatform/gcloud-node/issues/633 - 在解决该问题之前,我们正在等待升级到数据存储区的API。