petersirka/nosql

Access to custom() returns null consistently

octplane opened this issue · 2 comments

I'm note sure I'm using the library correctly, but this code:

var fs = require("fs"),
  path = require("path");

var db_path = "/tmp";
var db_file = path.join(db_path, "db.nosql");

var db = require('nosql').load(db_file);

console.log("Loaded %s db", db_file);
console.log(db.custom());

if(!db.custom() || !db.custom().configured) {
  console.log("Setting flag to True");
  db.custom({configured:true});
}

Writes configured:true every time it's run, although the database on the disk is:

{"version":"v2.0.2","views":{},"stored":{},"description":"","created":"2013-12-01T22:38:08.194Z","custom":{"configured":true}}

I believe it should not be the case and that it should do that only once.

Also, the console.log(db.custom()) always prints null as if the DB was not yet loaded...

Hi @octplane,

I updated NoSQL version (update version from NPM) and I added new event database.on('load', function() {});.

var fs = require("fs"),
path = require("path");

var db_path = "/tmp";
var db_file = path.join(db_path, "db.nosql");

var db = require('nosql').load(db_file);

console.log("Loaded %s db", db_file);
console.log(db.custom());

// OLD VERSION:
setTimeout(function() {
    if(!db.custom() || !db.custom().configured) {
        console.log("Setting flag to True");
        db.custom({configured:true});
    }
}, 200);

// NEW VERSION:
db.on('load', function() {
    var db = this;
    if(!db.custom() || !db.custom().configured) {
        console.log("Setting flag to True");
        db.custom({configured:true});
    }   
});

Thanks!

Nice, it works as expected, thank you :-). This event was not in the doc, so I didn't dig any further. I should have ! :)

👍