В поисках коммит-дайджеста для Amazon QLDB - PullRequest
1 голос
/ 05 октября 2019

Я пытаюсь подключиться и выполнить инструкции к Amazon QLDB с помощью Node.js. Чтобы достичь этого, мне нужно завершить последний шаг - вычислить дайджест коммита. Я понятия не имею, как это сделать.

Я тщательно исследовал API JavaScript QLDB Sessions здесь: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/QLDBSession.html, но там не было ничего о вычислении дайджеста фиксации. Я случайно нашел еще один вопрос о переполнении стека: Как получить / вычислить CommitDigest при совершении транзакции в AWS QLDB? . Я попытался понять комментарии и поработать с библиотекой ion-hash-js, чтобы посмотреть, смогу ли я создать дайджест коммита, но каждый раз, когда я запускал код, я продолжал получать ошибки. ОП не предоставил никаких отзывов о том, что сработало / не сработало, поэтому я застрял здесь.

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 Ответ

1 голос
/ 13 ноября 2019

Спасибо за ваш интерес к Amazon QLDB.

Драйвер QLDB для NodeJS теперь доступен для предварительного просмотра на GitHub. Подробности можно посмотреть здесь https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.nodejs.html.

Драйвер обрабатывает вычисление хэша коммита. Мы рекомендуем вам реализацию PooledQldbDriver , которая предоставляет возможности пула сеансов и удобные методы для прозрачной обработки попыток OCC. Подробная информация о том, как PooledQldbDriver может быть добавлена ​​в качестве зависимости, доступна в GitHub README.md .

Мы с нетерпением ждем ваших отзывов.

Спасибо, Сид

...