В настоящее время я работаю с AWS SDK и DynamoDB в своем коде, но основная проблема, с которой я постоянно сталкиваюсь, заключается в поиске области действия переменных, если я создаю асинхронную цепочку событий.
Это для моего сервера node.js, который будет запускать бот-телеграмму и извлекать / хранить данные в моем AWS DynamoDB. Он работает с множеством вложенных вызовов и передачей переменных, но делает код очень сложным.
То, чего я хочу достичь, это нечто похожее на ASYNC / AWAIT.
async DB(){
let paramsGet = { TableName:'some_table', Key:{"id":some_id} }
let database_item = await docClient.get(paramsGet, function(err,data){
if(err){
console.log(err)
} else {
console.log("SUCCESSFULL GET");
return data //RETURN IT TO VARIABLE
}
}
let paramsPut = {
TableName: "my_table",
Item: {
//THESE VALUES SHOULD WAIT FOR GET TO FINISH
//THEN SEND IT TO DB
"id":database_item.id,
"name":database_item.name,
"value":database_item.value
}
}
docClient.put(paramsPut, function(err,data){
if(err){
console.log(err)
} else {
console.log("SUCCESSFULL PUT");
}
}
}
DB();
Когда я сделаю это let db_item = await docClient.get(...)
и console.log(db_item)
, он покажет поток данных, который не похож ни на что, возвращаемое как данные в if(err){ console.log(err) } else { console.log(data)}
?
Как мне обработать это возвращаемое значение? Это обещание или что-то еще, что нужно проанализировать? Кажется, я не могу найти db_item.type
..