Aerospike 查询错误

Aerospike Query Error

    query = CLIENT.query(NAMESPACE, SET);
    stream = query.foreach();
    /*
        Get list of all avialable keys
    */
    stream.on('error', (error) => {
        throw error;
    });

    stream.on('data', (record) => {
        console.info('data', record);
        console.info('key', record.key.key);
    });

    stream.on('end', () => {
        console.log('done!');
        process.exit(0);
    });

接收错误 - AerospikeError:数据库中不存在记录。可以通过读取返回,或者使用策略 Aerospike.policy.exists.UPDATE.

写入
error encountered in promise chain => { [AerospikeError: Record does not exist in database. May be returned by read, or write with policy Aerospike.policy.exists.UPDATE]
  name: 'AerospikeError',
  code: 2,
  command:
   QueryCommand {
     client:
      Client {
        domain: null,
        _events: {},
        _eventsCount: 0,
        _maxListeners: undefined,
        config: [Object],
        as_client: AerospikeClient {},
        connected: true,
        captureStackTraces: false },
     args: [ 'sms_data', 'some_set', [Object], undefined ],
     captureStackTraces: false,
     key: undefined,
     stream:
      RecordStream {
        aborted: false,
        client: [Object],
        _events: [Object],
        _eventsCount: 3 } },
  func: 'as_query_parse_records_async',
  file: 'src/main/aerospike/aerospike_query.c',
  line: 237,
  inDoubt: false }

尽管数据存在于命名空间和集合中。

查询结果:

aql> select * from sms_data.some_set;
+-----------------------------------------------------+----------+
| 0                                                   | name     |
+-----------------------------------------------------+----------+
| MAP('{"dummy":[{"x":"dgjasgdj"}], "name":"Vidur"}') | "Khanna" |
+-----------------------------------------------------+----------+

这是 Aerospike Node.js 客户端(包括 v3.2.0 在内的所有版本)中的错误。简短的版本是,如果集群中的至少一个服务器节点在您正在查询的集合中没有任何记录,则会在查询操作中发生这种情况。有关详细信息,请参阅 issue #253 on GitHub。这应该在下一个客户端版本中得到解决。