小编str*_*rai的帖子

如何将"BatchGetItem"用于NodeJS AWS-SDK for DynamoDB

我正在尝试使用Node JS AWS-SDK从DynamoDB表中获取项目.该功能getItem工作正常,但BatchGetItem更难使用.

我使用官方文档:http: //docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/Client.html#batchGetItem-property

我正在寻找如何正确使用此功能的示例,但我找不到任何.我写的代码是:

var params = {

"RequestItems" : {
    "Keys" : [
      {"HashKeyElement" : { "N" : "1000" } },
      {"HashKeyElement" : { "N" : "1001" } }
    ]
  }
}

db.client.batchGetItem(params, function(err, data) {
  console.log('error: '+ err);
  console.log(jsDump.parse(data));
});
Run Code Online (Sandbox Code Playgroud)

我收到SerializationException: Start of list found where not expected错误,但就我的NodeJS和JSON专业知识而言,我的语法是正确的.但它令人困惑:http: //docs.aws.amazon.com/amazondynamodb/latest/developerguide/API_BatchGetItems.html

在该语法示例中,您必须提供表名.

node.js

10
推荐指数
3
解决办法
1万
查看次数

在循环中链接嵌套的promise

我对承诺不熟悉并坚持下面的练习.

我有一个值数组,我想在每个值上执行异步调用.在回调中,我想对第一次调用的结果执行另一个调用.

基本上,我的挫败感如下:执行顺序应为'1x2x3x',但顺序为'123xxx'

换句话说,当第一个promise的sub/nested promise尚未完全填充时,循环已经进入下一次迭代.

var values = ["1", "2", "3"];

function do(val) {
  var deferred = Q.defer();


  asyncCall(val)
  .then( function( response ) {
    console.log(val); 
    asyncCall(response)
    .then( function ( response ) {
      console.log('x');
      deferred.resolve(true)
    });
  });

  return deferred.promise;
}

var result = do(values[0]);

values.forEach( function(f) {
  result = result.then(do(f));
}
Run Code Online (Sandbox Code Playgroud)

可能有一个简单的解决方案,但我坚持下去.

javascript loops nested promise

7
推荐指数
1
解决办法
3567
查看次数

标签 统计

javascript ×1

loops ×1

nested ×1

node.js ×1

promise ×1