node package manager

rank-me

rank-me

Minimalistic leaderboards for the ranking of non-unique usernames.

Every new name/score pair added to a leaderboard will generate a unique id associated with the transaction. This id can be stored and used to query additional information about the transaction at a later time.

Installation

npm install rank-me

API

Constructor

var Leaderboard = require('rank-me');
 
var leaderboard = new Leaderboard('leaderboard_id', [options]);

Options

  • host (default: 127.0.0.1)
  • The host address of the redis server.
  • port (default: 6379)
  • The port of the redis server.
  • db (default: 0)
  • Select the specified redis DB.

Methods

getScoreCount(callback)

Gets the total # of stores stored in the leaderboard.

leaderboard.getScoreCount(function(err, count) {
    // count - The # of scores in the leaderboard. 
});

addScore(name, score, callback)

Adds a score to the leaderboard for a given user name.
Names are not required to be unique. For every name/score that is added to the leaderboard, a unique entryId will be generated. This unique id is passed as a parameter to the callback of addScore. Using this unique id, information about the added score entry can be queried if desired.

leaderboard.addScore('Bob', 4, function(err, entryId) {
    // entryId - The unique id for the added score. 
});

getRank(entryId, callback)

Gets the rank for a given leaderboard entry.

leaderboard.getRank(entryId, function(err, rank) {
    // rank - The rank of the user, or -1 if it didn't exist. 
});

getScoresForRankRange(fromRank, toRank, callback)

Gets the names and scores for a given range of ranks.
Note that fromRank and toRank indices are both inclusive.

//   Get the top 3 ranks: 
leaderboard.getScoresForRankRange(0, 2, function(err, list) {
    // list - List of names ordered from highest to lowest score 
    // [ 
    //   { name: 'bob', rank: 0, score: 30 }, 
    //   { name: 'joe', rank: 1, score: 20 }, 
    //   { name: 'sue', rank: 2, score: 10 } 
    // ] 
});