Tengo un archivo main.js y un archivo de módulo DBHalnder.js . Usando sqlite3 , realizo una consulta SELECT dentro del módulo. La consulta recupera el resultado correcto dentro del módulo, pero no puedo exportarlo al exterior; del archivo main.js , la variable minPrice no está undefined . ¿Qué estoy haciendo mal? Además, el IDE me advierte que retrieveMinPrice parece ser una función void .
principal.js
const dbHandler = require('./DBHandler'); var minPrice = dbHandler.retrieveMinPrice("PLAYER"); console.log(minPrice); //it doesn't work --> undefinedDBHandler.js
const sqlite3 = require('sqlite3'); const db = new sqlite3.Database('DB/database.sqlite.db'); module.exports = { retrieveMinPrice: function (playerName) { db.serialize(function() { var sql_query = "SELECT MIN(ethPrice) FROM cards WHERE playerName = ?"; var values = [playerName]; db.get(sql_query, values, function (err, rows) { console.log(rows['MIN(ethPrice)']); //it works return(rows['MIN(ethPrice)']); }); }); } }EDITAR después del comentario de Mushroomator:
principal.js
const dbHandler = require('./DBHandler'); var promise = new Promise(function(resolve, reject) { dbHandler.retrieveMinPrice("PLAYER", resolve, reject); }); promise.then(function(result) { console.log(result); // "Stuff worked!" }, function(err) { console.log(err); // Error: "It broke" });DBHandler.js
retrieveMinPrice: function (playerName, resolve, reject){ db.serialize(function() { var sql_query = "SELECT MIN(ethPrice) FROM cards WHERE playerName = ?"; var values = [playerName]; db.get(sql_query, values, function (err, rows) { if (err) { console.log(err); reject(err); } else { resolve(rows['MIN(ethPrice)']); } }); }); }