gpt4 book ai didi

node.js - 如何在Node.js中获取describeTable amazon dynamoDB方法的结果?

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:21 25 4
gpt4 key购买 nike

在我的应用程序中,我将 node.js 与亚马逊网络服务 dynamoDB 一起使用。我已经创建了一个表并在其中插入了项目。现在我想使用describeTable 显示表的项目计数。我该怎么做。我尝试了下面的代码,但它不起作用。

     var AWS = require('aws-sdk');
AWS.config.update({accessKeyId: '****', secretAccessKey: '****',region: 'us-east-1'});
var svc = new AWS.DynamoDB();
svc.client.describeTable({TableName:"Users"}, function(err,result) {
if(!err){

console.log('result is '+result[ItemCount]);
console.log('success');
}
else{

console.log("err is "+err);
}
});

最佳答案

您的问题的直接答案是您需要在回调函数中使用 result.Table.ItemCount 而不是 result.ItemCount 。但请注意,此计数不会实时更新,并且可能不会反射(reflect)最近对表的插入或删除。如果您想要当前的项目计数,则需要扫描表并使用 Count 属性来获取已扫描项目的计数。像这样的扫描可能会消耗表的所有预配置容量,因此如果这是一项要求,请务必平衡对最新项目计数的需求与可能同时在表上运行的其他操作。

这是返回项目计数的 Node.js 扫描示例。由于扫描是迭代调用的,直到读取所有行为止,因此我使用 async模块在发出下一个循环之前等待结果。

var async = require('async');
var AWS = require('aws-sdk');

AWS.config.update({accessKeyId: 'AKID',
secretAccessKey: 'secret',
region: 'us-east-1'});
var svc = new AWS.DynamoDB();

var scanComplete = false,
itemCountTotal = 0,
consumedCapacityUnitsTotal = 0;

var scanParams = { TableName : 'usertable',
Count : 'true' };

// scan is called iteratively until all rows have been scanned
// this uses the asyc module to wait for each call to complete
// before issuing the next.
async.until( function() { return scanComplete; },
function (callback) {
svc.scan(scanParams, function (err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
if (typeof (result.LastEvaluatedKey) === 'undefined' ) {
scanComplete = true;
} else {
// set the start key for the next scan to our last key
scanParams.ExclusiveStartKey = result.LastEvaluatedKey;
}
itemCountTotal += result.Count;
consumedCapacityUnitsTotal += result.ConsumedCapacityUnits;
if (!scanComplete) {
console.log("cumulative itemCount " + itemCountTotal);
console.log("cumulative capacity units " + consumedCapacityUnitsTotal);
}
}
callback(err);
});
},
// this runs when the loop is complete or returns an error
function (err) {
if (err) {
console.log('error in processing scan ');
console.log(err);
} else {
console.log('scan complete')
console.log('Total items: ' + itemCountTotal);
console.log('Total capacity units consumed: ' + consumedCapacityUnitsTotal);
}
}
);

关于node.js - 如何在Node.js中获取describeTable amazon dynamoDB方法的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15543418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com