Aerospike Chat


Hello, i would like to create a online chat room(s) for our client. The structure is: namespace: chat set: [room id] key: [microtimestamp]

There is no problem with record creation, but i am not able to write proper query to get last 30 records inserted.

       var statement = {};
	if (last_id != null) {
		statement.filters = [aerospike.filter.range('created', last_id, 99999999999999)];
	var results = [];
	var query = client.query('chat', objectId);
	var stream = query.execute();
	stream.on('data', function(result) {
		var id = result.meta.key;
		result = result.bins; = id;
	stream.on('error', function(error) {
	stream.on('end', function(end) {

Can you please help me? Thank you


Hi Daniel,

I see that you’re filtering only if last_id is not null but statement is never passed to client.query('chat', objectId); — so the code as is will always return all records in chat >> objectId set.

Is that what you’re experiencing and referring to? If not, please share more info with regards to:

  • Expected result vs actual result you’re seeing with your data set
  • Secondary index(es) you’ve created
  • If there are any errors being output in the console or log




Thank you for your answer. Now i am passing the filter into statement. The problem is that i am unable to get records in ordered list. I use bin “created” (micro time stamp) as index (i am not sure how to use it properly) and as a key. I need last 30 records only.


Hi Daniel,

For ordered list, we’d recommend using Aerospike’s Large Ordered List. IMP to note: It is currently (as of version 1.0.30) not available in our Node.js client but we’re actively working on adding it. In the meantime, you can read more about it here -

I hope this helps.