[英]nodejs mysql using data in other modules/files
我正在嘗試從數據庫中獲取數據,並將其用於應用程序的不同模塊中。 我的應用程序分為許多模塊,我需要在需要它們的地方。
我的connectDB.js模塊看起來像這樣
var mysql = require('mysql');
var db = mysql.createConnection({
host: "localhost",
user: "root",
password: "pw",
database : "something"
});
db.connect(function(err){
if(err){
console.log('Error connecting to Db');
return;
}
console.log('Database connected');
});
function select(query)
{
db.query(query,function(err,rows){
if(err) throw err;
return rows;
});
}
module.exports =
{
select
}
我只是希望只需要這個模塊,然后做類似的事情
db.select('SELECT * FROM users');
但是由於某種原因,返回值始終為“未定義”
在connectDB模塊內發送查詢可以按預期返回正確的數據。 但是我不能使用我的函數來獲取數據。
我的邏輯有什么問題嗎? 你能幫我做錯什么嗎?
對您的代碼進行以下更改
module.exports =
{
select: select
}
而且您忘記了回調函數
function select(query, callback)
{
db.query(query,function(err,rows){
if(err) throw err;
return callback(rows);
});
}
然后,您可以傳遞如下函數:
db.select('SELECT * FROM users', function(rows) {
// Do stuff with rows
});
我記得,connection.query將返回異步結果,因此您需要使用回調或Promise將其包裝。
var mysql = require('mysql');
function DB {
var db = mysql.createConnection({
host: "localhost",
user: "root",
password: "pw",
database : "something"
});
db.connect(function(err){
if(err){
console.log('Error connecting to Db');
return;
}
console.log('Database connected');
});
this.select = function(query, callback) {
db.query(query,function(err,rows){
if(err) throw err;
callback(rows);
});
}
//Promise version
this.selectPromise = function(query) {
return new Promise(function(resolve, reject){
db.query(query,function(err,rows){
if(err) reject(err);
resolve(rows);
});
});
}
}
module.exports = DB;
如何使用:
var DB = require('your-module');
var db = new DB();
db.query('select * from table', function(result) {
console.log(result);
});
db.selectPromise('select * from table').then(function(result) {
console.log(result);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.