Skip to content

Instantly share code, notes, and snippets.

@davidthings
Created May 3, 2011 03:46
Show Gist options
  • Save davidthings/952781 to your computer and use it in GitHub Desktop.
Save davidthings/952781 to your computer and use it in GitHub Desktop.
Test Case for Multiple Indicies on Alfred
var assert = require( "assert" );
var Alfred = require('../../../../alfred/');
var Base;
var Id;
var Name;
var Age;
var Sex;
var randomate = function() {
Base = Math.floor( Math.random() * 100000 );
Id = Base + ":Id";
Name = Base + ":N";
Age = Base + ":A";
Sex = Base + ":S";
}
exports['test multiple index problem'] = function( ){
var db;
var loop = 0;
var finished = function( ) {
db.close(function(err) {
if (err) { throw(err); return; }
//done();
assert.ok("!");
})
}
var findUsers = function() {
console.log( "Now looking for users" );
db.users.find( { 'age': {$eq:Age} } ).bulk(function(err, records) {
if (err) { done(err); return; }
console.log( "bulk " + records.length );
console.dir( records );
if ( loop++ < 5 )
insertUser();
else
finished();
} );
}
var insertUser = function() {
randomate();
var o = { name:Name, age:Age, sex:Sex }
db.users.put( Id, o, function(err) {
if (err) { throw err; }
findUsers();
});
}
// Open database
Alfred.open( './test.db', function(err, dbInit) {
if (err) { throw err; }
db = dbInit;
db.ensure_key_map_attached('users', null, function(err) {
if ( err ) { throw err; }
console.log('users key map attached');
var indexFnAge = function(user) { return user.age; }
var indexFnName = function(user) { return user.name; }
db.users.ensureIndex('age', null, indexFnAge, function(err) {
if (err) { throw err; }
console.log('age index added to users');
// comment out this other index and it works all day long
// otherwise works just one run
db.users.ensureIndex('name', null, indexFnName, function(err) {
if (err) { throw err; }
console.log('name index added to users');
insertUser( );
});
});
});
});
// * end of test
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment