簡體   English   中英

使用其他模塊/文件中的數據的nodejs mysql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM