javascript - sqlite.get() results in TypeError: Cannot read property 'get' of null -
when trying execute sql.get() call works in places, not in others , can't seem figure out what's difference.
database sucessfully opened or @ least never got error , never gets closed. use discord.js in second (working example), not sure if relevant, though.
in example doesn't work.
test.js:
const sql = require("sqlite"); sql.open("./data.sqlite"); exports.getitemid = function(item) { return new promise(function (fulfill, reject){ sql.get(`select * items name="${item}"`).then(row => { console.log(`do stuff`); }).catch((e) => { console.error; reject(e); }) }); } exports.getitemid("coins").then(itemid => { console.log(itemid); }).catch((e) => { console.log(e); }); stacktrace:
$ node test.js typeerror: cannot read property 'get' of null @ promise (/users/julianveerkamp/node_modules/sqlite/main.js:225:18) @ promise (<anonymous>) @ database.get (/users/julianveerkamp/node_modules/sqlite/main.js:224:12) @ /users/julianveerkamp/workspace/test-bot/test.js:6:13 @ promise (<anonymous>) @ object.exports.getitemid (/users/julianveerkamp/workspace/test-bot/test.js:5:12) @ object.<anonymous> (/users/julianveerkamp/workspace/test-bot/test.js:15:9) @ module._compile (module.js:573:30) @ object.module._extensions..js (module.js:584:10) @ module.load (module.js:507:32) but when call function
const sql = require("sqlite"); sql.open("./data.sqlite"); // other stuff let commandfile = require(`./commands/command.js`); commandfile.run(client, message, args); // other stuff it works fine.
command.js:
const sql = require("sqlite"); sql.open("./data.sqlite"); exports.run = (client, message, args) => { sql.get(`select * scores userid ="${message.author.id}"`).then(row => { // stuff row }).catch(() => { console.error; }); }
this might bug in sqlite went ahead , used sqlite3 instead , wrapped/promisified functions myself util.promisify().
const util = require('util'); const sqlite3 = require('sqlite3'); var db = new sqlite3.database('./data.sqlite'); db.get = util.promisify(db.get); db.run = util.promisify(db.run); exports.getitemid = function(item) { return new promise(function (fulfill, reject){ db.get(`select * items name="${item}"`).then(row => { console.log(`do stuff`); }).catch((e) => { console.error; reject(e); }); }); } exports.getitemid("coins").then(itemid => { console.log(itemid); }).catch((e) => { console.log(e); }); note: new promise inside function not necessary. 1 return promise function.
Comments
Post a Comment