查找Amazon QLDB的提交摘要

时间:2019-10-05 07:54:56

标签: node.js aws-sdk amazon-qldb

我正在尝试使用Node.js连接并执行语句到Amazon QLDB。为了实现这一点,我需要完成计算提交摘要的最后一步。我不知道该怎么做。

我已经在https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/QLDBSession.html处对QLDB会话javascript API进行了深入研究,但是关于计算提交摘要没有任何内容。我碰巧在这里找到另一个关于堆栈溢出的问题:How to get/compute CommitDigest when committing a transaction in AWS QLDB?。我试图理解注释并弄混ion-hash-js库,以查看是否可以创建提交摘要,但是每次运行代码时,我都会不断出错。 OP没有提供关于什么有效/无效的任何反馈,因此我被困在这里。

const AWS = require('aws-sdk');

const qldb = new AWS.QLDB({apiVersion: '2019-01-02', region: 'us-east-1'});
var qldbSession = new AWS.QLDBSession({apiVersion: '2019-07-11', region: 'us-east-1'});


const ionHashJS = require("ion-hash-js/dist/commonjs/es5/src/IonHash");
const ionJs = require('ion-js')


async function execute(){

let sessionToken;
let transactionId;
let digest;


// ** Start Session **
await qldbSession.sendCommand({
    StartSession: {
        LedgerName: 'Vehicle-Registration'
    }
}).promise().then(data => {
    sessionToken = data.StartSession.SessionToken
})

// ** Start Transaction **
await qldbSession.sendCommand({
    StartTransaction: {},
    SessionToken: sessionToken
}).promise().then(data => {
    transactionId = data.StartTransaction.TransactionId
})

// ** Insert Document **
await qldbSession.sendCommand({
    ExecuteStatement: {
        TransactionId: transactionId,
        Statement: `CREATE TABLE Vehicle`
    },
    SessionToken: sessionToken
}).promise().then(data => {
    console.log(data)
})

// ** Get Ledger Digest **
await qldb.getDigest({
    Name: 'Vehicle-Registration'
}).promise().then(data => {
    digest = data.Digest

}).catch(err => console.log(err))




// ** Commit Transaction **
await qldbSession.sendCommand({
CommitTransaction: {
    TransactionId: transactionId,
    CommitDigest: digest // <-- How to compute?
},
SessionToken: sessionToken}).promise().then(data => {console.log(data)}).catch(err => console.log(err))

}

execute();

我不断收到“摘要不匹配”错误

1 个答案:

答案 0 :(得分:5)

感谢您对Amazon QLDB的关注。

NodeJS的QLDB驱动程序现在可以在GitHub上预览。您可以在https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.nodejs.html处查看详细信息。

驱动程序处理提交哈希的计算。 我们将向您推荐PooledQldbDriver实现,该实现提供会话池功能和方便的方法,以透明的方式处理OCC重试。 GitHub README.md中提供了有关如何将PooledQldbDriver作为依赖项添加的详细信息。

我们期待您的反馈。

谢谢, 席德