从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) }) }) })