如何在Lambda中运行同步dynamodb请求? [英] How can I run synchronous dynamodb request in lambda?

查看:229
本文介绍了如何在Lambda中运行同步dynamodb请求?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

const params = {
  TableName: 'item-table',   
  FilterExpression : "#tagname = :itemId",
  ExpressionAttributeNames: {"#tagname": "itemId"},
  ExpressionAttributeValues: {":itemId": "000001"}    
    };
var item ="";
dynamo.scan(params, function(err, data)
{
 if (err) {
    console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
    item = err;
    } else {
        console.log("Query succeeded.");
        data.Items.forEach(function(item) {
          item += item.itemName;
      });
      }
      return item;
});

扫描不等待返回输出,而是进入下一步.我们如何运行从lambda到dynamodb的同步调用.

Scan is not waiting to return the output but going to next step. How can we run synchronous call from lambda to dynamodb.

推荐答案

如果您确实需要同步扫描,则可以使用以下方式之一:

If you really need synchronous scan, you can use one of the ways below:

1.使用JavaScript的Promise资源:

const params = {
    TableName: 'item-table',   
    FilterExpression : "#tagname = :itemId",
    ExpressionAttributeNames: {"#tagname": "itemId"},
    ExpressionAttributeValues: {":itemId": "000001"} };

function scan(params) {
  return new Promise((resolve, reject) => {
    dynamo.scan(params, (err, data) => {
      if (err)
        reject(err);
      else
        resolve(data);
    };
  };
}

async function syncScan() {
  var data;
  try {
    data = await scan(params);
    console.log("Query succeeded.");
  }
  catch (err) {
  console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
  }
        
  return data;
}

syncScan();

2.使用aws-sdk返回对象:

const AWS = require('aws-sdk');
AWS.config.update({ region: 'sa-east-1' });
const docClient = new AWS.DynamoDB.DocumentClient();

async function syncScan() {

  const params = {
    TableName: 'item-table',   
    FilterExpression : "#tagname = :itemId",
    ExpressionAttributeNames: {"#tagname": "itemId"},
    ExpressionAttributeValues: {":itemId": "000001"} 
  };

  const awsRequest = await docClient.scan(params);
  const result = await awsRequest.promise();
  console.log(result.Items); // <<--- Your results are here
}

syncScan();

这篇关于如何在Lambda中运行同步dynamodb请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆