本文介绍如何通过 Node.js SDK 范围读取表格存储中的数据。
前提条件
方法说明
getRange: function getRange(params, callback)示例代码
以下示例代码用于读取 test_table 表中主键值大于 row1 的数据。
var params = {
tableName: 'test_table',
// 设置查询起始主键
inclusiveStartPrimaryKey: [{ 'id': 'row1' }],
// 设置查询结束主键(返回结果不包含结束主键)
exclusiveEndPrimaryKey: [{ 'id': TableStore.INF_MAX }]
};
// 调用 getRange 方法查询数据
client.getRange(params, function (err, data) {
if (err) {
console.log('Get range failed with error: ', err);
return;
}
console.log('* RequestId: ', data.RequestId);
console.log('* Read CU Cost: ', data.consumed.capacityUnit.read);
console.log('* Write CU Cost: ', data.consumed.capacityUnit.write);
console.log('* Rows Data: ');
data.rows.forEach(function (row) {
console.log(row);
});
});单次范围扫描数据上限为 5000 行或者 4 MB,超出限制部分的数据将返回用于下一次读取的起始主键值,您可以参考以下代码进行迭代查询。
async function getRangeSample() {
try {
while (true) {
// 调用 getRange 方法查询数据
const data = await client.getRange(params);
// 返回结果处理
console.log('* RequestId: ', data.RequestId);
console.log('* Read CU Cost: ', data.consumed.capacityUnit.read);
console.log('* Write CU Cost: ', data.consumed.capacityUnit.write);
console.log('* Rows Data: ');
data.rows.forEach(function (row) {
console.log(row);
});
// 设置下一次读取数据起始主键
if (data.nextStartPrimaryKey) {
params.inclusiveStartPrimaryKey = data.nextStartPrimaryKey.map(item => {
return {
[item.name]: item.value
};
});
} else {
break;
}
}
} catch (err) {
console.log('Range get failed with error: ', err);
}
}
getRangeSample();您也可以在查询数据时参考示例代码进行以下设置。
设置数据读取方向。
var params = { tableName: 'test_table', // 设置查询起始主键(反向读取数据时,起始主键要大于结束主键) inclusiveStartPrimaryKey: [{ 'id': TableStore.INF_MAX }], // 设置查询结束主键(返回结果不包含结束主键) exclusiveEndPrimaryKey: [{ 'id': 'row1' }], // 设置反向读取数据 direction: TableStore.Direction.BACKWARD };设置读取的数据版本范围,结果只返回版本范围内的数据。
// 设置查询的数据版本范围为当前时间往前一天 params.timeRange = { startTime: (Date.now() - 86400 * 1000).toString(), endTime: Date.now().toString() }指定读取的属性列。
params.columnsToGet = ['col2']设置单次返回最大行数。
params.limit = 10
相关文档
该文章对您有帮助吗?