Utilice el método getRange del SDK de Node.js para Tablestore con el fin de leer datos dentro de un rango de clave primaria especificado.
Requisitos previos
Método
getRange: function getRange(params, callback)
Ejemplos
A continuación se muestra un ejemplo que lee datos de la tabla test_table donde el valor de la clave primaria es mayor que row1.
var params = {
tableName: 'test_table',
// Set the start primary key for the query.
inclusiveStartPrimaryKey: [{ 'id': 'row1' }],
// Set the end primary key for the query. The end primary key is not included in the result.
exclusiveEndPrimaryKey: [{ 'id': TableStore.INF_MAX }]
};
// Call the getRange method to query data.
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);
});
});
Un escaneo de rango único devuelve un máximo de 5,000 filas o 4 MB de datos. Si se supera este límite, la respuesta incluye la clave primaria inicial para la siguiente lectura. Utilice el siguiente código para realizar consultas iterativas.
async function getRangeSample() {
try {
while (true) {
// Call the getRange method to query data.
const data = await client.getRange(params);
// Process the returned result.
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);
});
// Set the start primary key for the next read.
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();
También puede configurar los siguientes ajustes al consultar datos.
-
Establezca la dirección de lectura de datos.
var params = { tableName: 'test_table', // Set the start primary key for the query. When you read data in reverse order, the start primary key must be greater than the end primary key. inclusiveStartPrimaryKey: [{ 'id': TableStore.INF_MAX }], // Set the end primary key for the query. The end primary key is not included in the result. exclusiveEndPrimaryKey: [{ 'id': 'row1' }], // Set the read direction to reverse. direction: TableStore.Direction.BACKWARD }; -
Establezca un rango de versiones. Solo se devuelven los datos dentro del rango especificado.
// Set the version range for the query to the last 24 hours. params.timeRange = { startTime: (Date.now() - 86400 * 1000).toString(), endTime: Date.now().toString() } -
Especifique las columnas de atributos a leer.
params.columnsToGet = ['col2'] -
Establezca el número máximo de filas a devolver en una sola solicitud.
params.limit = 10