如何在Aerospike Node.js客户端中获取主键

时间:2016-05-03 07:24:04

标签: node.js aerospike

我试图从Aerospike获取所有记录和主键。 我尝试使用client.query功能,如下所示

var query = client.query(aerospikeDBParams.dbName,"testRecords");
var stream = query.execute();

这样我就可以获得除主键之外的所有字段。如何获得主键以及其他字段?

提前致谢

1 个答案:

答案 0 :(得分:3)

首先需要使用record存储主键。客户端和服务器使用其摘要定位记录,客户端使用(名称空间,集,主键)信息进行哈希。密钥写入策略的默认值为Aerospike.policy.key.DIGEST。您需要明确将其设置为Aerospike.policy.key.SEND

请参阅Aerospike:module文档。它包含这个例子:

// global policy, applied to all commands that do not override it
var config = {
  policies: {
    timeout: 100,
    retry: Aerospike.policy.retry.ONCE
  }
}

Aerospike.connect(config, (error, client) => {
  if (error) throw error

  var key = new Aerospike.Key('test', 'demo', 'k1')
  var record = {i: 1234}

  // override policy for put command
  var policy = {
    exists: Aerospike.policy.exists.CREATE,
    key: Aerospike.policy.key.SEND
  }

  client.put(key, record, {}, policy, (error) => {
    if (error && error.code === Aerospike.status.AEROSPIKE_ERR_RECORD_EXISTS) {
      console.info('record already exists')
    } else if (error) {
      throw error
    }
    client.close()
  })
})

当密钥与记录一起存储时,查询将返回它们。