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

时间:2016-05-05 12:00:25

标签: node.js aerospike

我正在尝试使用client.get()在Aerospike node.js客户端中检索主键。我已使用client.put()插入记录,方法是将策略更改为Aerospike.policy.key.SEND,如上所述herehere

现在我想要检索记录和主键。 我尝试像Aerospike Documentation中提到的那样做,但似乎没有用。

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

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

提前致谢。

2 个答案:

答案 0 :(得分:5)

功能的第四个参数是关于您想要的主键的信息。

以我的代码为例:

<UserControl>
    <UserControl.DataContext>
        <recoveriX:RecoverixDevice  DeviceName="thisIsAName"/>
    </UserControl.DataContext>

    <Grid>
        <TextBlock x:Name="title"  Text="{Binding DeviceName}"/>
    </Grid>
</UserControl>

输出结果为:

  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 }

答案 1 :(得分:2)

您正在查看旧版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)
    })
  })
})