Поиск дайджеста коммитов для Amazon QLDB
Я пытаюсь подключиться к Amazon QLDB и выполнить инструкции с помощью Node.js. Для этого мне нужно выполнить последний шаг - вычисление дайджеста фиксации. Понятия не имею, как это сделать.
Я тщательно исследовал javascript API сеансов QLDB здесь: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/QLDBSession.html, но ничего не было о вычислении дайджеста фиксации. Я случайно нашел здесь еще один вопрос о переполнении стека: как получить / вычислить CommitDigest при фиксации транзакции в 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 ответ
Благодарим за интерес к Amazon QLDB.
Драйвер QLDB для NodeJS теперь доступен в предварительной версии на GitHub. Подробности можно посмотреть здесь https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.nodejs.html.
Драйвер обрабатывает вычисление хэша фиксации. Мы рекомендуем вам реализацию PooledQldbDriver, которая обеспечивает возможности объединения сеансов и удобные методы для прозрачной обработки повторных попыток OCC. Подробная информация о том, как PooledQldbDriver может быть добавлена в качестве зависимости, доступна в GitHub README.md.
Будем рады вашим отзывам.
Спасибо, Сид