Я использую цепной код Hyperledger Fabric 1.4 и пытаюсь получить историю ключа с помощью метода заглушки getHistoryForKey
. Я перебираю каждую запись и хочу преобразовать их для стандартизации во всех моих функциях цепного кода.
Теперь я могу обрабатывать все ключи в итераторе, кроме метки времени, равной google.protobuf.Timestamp
. Любые мои попытки не могут преобразовать его в строку даты и времени ISO.
Код
// Entry method to retrieve the full history of any asset
async (stub, args) => {
const idToSearch = args.id
const historyIterator = await stub.getHistoryForKey(idToSearch)
let historyData = []
await iterate(historyData, historyIterator)
if (historyData.length === 0) throw errors.ASSET_NOT_FOUND(idToSearch)
return historyData
}
// I use node v8 and thus cannopt use for await to iterator and must write recursive helper func
const iterate = async (historyData, historyIterator) => {
const element = await historyIterator.next()
if (!element) return historyIterator.close()
const {value} = element
if (!value) return historyIterator.close()
historyData.push({
value: value.value.toString('utf8'),
isDeleted: value.is_delete,
txId: value.tx_id,
timestamp: value.timestamp // <-- WANT TO CONVERT TO ISO DATE TIME STRING
})
await iterate(historyData, historyIterator)
}
Мои подходы
1. toISOString ()
Относительно документации протобуфа метки времени написано " В JavaScript можно преобразовать объект Date в этот формат, используя стандартную toISOString () ". Это не работает, так как я получаю "toISOString не является функцией".
2. new Date ()
Далее я попытался запустить new Date(protobufTimestamp)
, что привело к "Invalid Date"
.
3. Используя секунды
, хотя, возможно, я смогу использовать секунды, которые находятся на двух клавишах (Object.keys(protobufTimestamp)
=> [seconds, nanos]
) в метке времени, для создания даты. Но этот объект даты также говорит «Неверная дата». Это можно объяснить, поскольку я прочитал, что временная метка Protobuf охватывает диапазоны от 0 до 9999. Поэтому, возможно, преобразование завершится неудачей.
Вопрос
Может кто-нибудь объяснить, как преобразовать временную метку google protobufк метке времени ISO в Fabric 1.4 в NodeJS?