Access to custom() returns null consistently
octplane opened this issue · 2 comments
octplane commented
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...
petersirka commented
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!
octplane commented
Nice, it works as expected, thank you :-). This event was not in the doc, so I didn't dig any further. I should have ! :)
👍