从Aerospike node.js客户端检索主键

我正在尝试使用client.get()来检索Aerospike node.js客户端中的主键。 我已经使用client.put()通过将策略更改为Aerospike.policy.key.SEND来插入logging,如此处和此处所述 。

现在我想和主键一起检索logging。 我试过像Aerospike文档中提到的那样做,但似乎并不奏效。

var key = aerospike.key(aerospikeDBParams.defaultNamespace,aerospikeDBParams.defaultSet,count); var readpolicy = { key: aerospike.policy.key.SEND } client.get(key, readpolicy, function(err, rec, meta){} 

我得到所有的垃圾箱,但不是主键。 我在这里错过了什么?

提前致谢。

函数的第四个参数是关于你想要的主键的信息。

以我的代码为例:

  var readpolicy = { key: Aerospike.policy.key.SEND } var key = new Aerospike.Key(ns, set, "sel-fish") client.get(key, readpolicy, function (err, record, metadata, key) { if (null == err) { console.log("get ok") console.log(record) console.log(metadata) console.log(key) } }) 

输出是:

 get ok { uid: 1000, name: 'sel-fish', dob: { mm: 12, dd: 29, yy: 1995 }, friends: [ 1001, 1002, 1003 ], avatar: <Buffer 0a 0b 0c> } { ttl: 431997, gen: 3 } Key { ns: 'test', set: '14', key: 'sel-fish', digest: null } 

驱动程序的版本是aerospike@2.0.3

您正在查看较旧的1.x客户端的文档。 2.x客户端的文档位于http://www.aerospike.com/apidocs/nodejs/

只要密钥存储在写入操作中,您应该能够通过后续读取来获取密钥。

 const Aerospike = require('aerospike') function assertOk (error, message) { if (error) { console.error('ERROR - %s: %s [%s]\n%s', message, error.message, error.code, error.stack) throw error } } const Key = Aerospike.Key Aerospike.connect({ hosts: '127.0.0.1:3000' }, function (error, client) { assertOk(error, 'Connecting to Aerospike cluster') var key = new Aerospike.Key('test', 'demo', 1) var bins = { a: 1, b: 2 } var policy = { key: Aerospike.policy.key.SEND } client.put(key, bins, {}, policy, function (error) { assertOk(error, 'Writing database record') client.get(key, function (error, record, meta) { assertOk(error, 'Reading database record') console.log(record, meta) }) }) })