TableStoreでテーブル内の全てのオブジェクトを取得する方法

プライマリキーに対してgetRange()メソッドを実行します。この時プライマリキーの範囲をTableStore.INF_MIN以上TableStore.INF_MAXにすることで全てのオブジェクトを取得することができます。

実はドキュメント通り。

複数行操作 - 開発ガイド| Alibaba Cloud ドキュメントセンター

const TableStore = require('tablestore')
const Long = TableStore.Long
const instanceName = 'teststorage'

const client = new TableStore.Client({
  accessKeyId: "xxxxxxxxxxxxxx",
  secretAccessKey: "xxxxxxxxxxxxxxxxxxxxxxxxx",
  endpoint: `https://${instanceName}.cn-hangzhou.ots.aliyuncs.com`,
  instancename: instanceName,
})

const params = {
  tableName: "locations",
  direction: TableStore.Direction.FORWARD,
  inclusiveStartPrimaryKey: [{ "uuid": TableStore.INF_MIN }],
  exclusiveEndPrimaryKey: [{ "uuid": TableStore.INF_MAX }],
  limit: 50
}

client.getRange(params, function (err, data) {
  if (err) {
    console.log('error:', err)
    return
  }
  console.log('success:', data)
  console.log(data.rows[0])
})

data.rowsに全てのオブジェクトが入っています。

$ node getRange.js
success: { consumed: { capacity_unit: { read: 1, write: 0 } },
  rows:
   [ { primaryKey: [Array], attributes: [Array] },
     { primaryKey: [Array], attributes: [Array] },
     { primaryKey: [Array], attributes: [Array] } ],
  next_start_primary_key: null,
  next_token: null,
  RequestId: '000570e0-97c0-f4e2-697d-da0b4a4e7184' }

{ primaryKey: [ { name: 'uuid', value: '5591f4f4f7088729' } ],
  attributes:
   [ { columnName: 'created_at',
       columnValue: 1531287325266,
       timestamp: [Int64] },
     { columnName: 'mesh_code',
       columnValue: 52354000,
       timestamp: [Int64] } ] }