我正在尝试使用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
在该语法示例中,您必须提供表名.
我对承诺不熟悉并坚持下面的练习.
我有一个值数组,我想在每个值上执行异步调用.在回调中,我想对第一次调用的结果执行另一个调用.
基本上,我的挫败感如下:执行顺序应为'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)
可能有一个简单的解决方案,但我坚持下去.