Return node.js sql 结果到其他文件

Return node.js sql result to other file

我想创建一个网站,我可以在其中显示来自 mysql 数据库的结果。 我完成了网站和 sql 查询,但我仍然坚持 return 我的 SQL 结果。 这是我使用 nodejs 显示我的 pug 文件的服务器代码: app.js

const express = require("express");
const app = express();
const path = require("path");
const router = express.Router();

var db=require("../node_js/db.js");


app.set("view engine","pug");

app.listen(3000, () => {
  console.log("Application started and Listening on port 3000");
});

app.use(express.static(__dirname));

app.get("/", (req, res) => {
  sql_result=query("SELECT * FROM test");  //here should i get my sql result
  res.render("test",{title:"Card",details:sql_result});
});

我的数据库连接代码: db.js

function query(sql){
  return new Promise(function(resolve,reject){
  var connection=db;
  connection.query(sql,function(err,rows,fields){
    if(err){
      return reject(err);
    }
    resolve(rows[randomRow(0,rows.length)]);
    });
  });
}

query("SELECT * FROM SONGS").then(function(rows){
  console.log(rows);
}).catch((err)=>setImmediate(()=>{throw err;}));

我努力 return 'rows' 从查询到我的 app.js 文件并在 'app.get("/").

中使用它

在第一个文件中,您应该要求您的其他文件能够使用其功能。 因为它 returns 一个承诺,你可以使用 await 来获得结果。

app.js

const express = require("express");
const app = express();
const path = require("path");
const query = require("./db.js");
const router = express.Router();

var db=require("../node_js/db.js");


app.set("view engine","pug");

app.listen(3000, () => {
  console.log("Application started and Listening on port 3000");
});

app.use(express.static(__dirname));

app.get("/", async (req, res) => {
  let sql_result=await query("SELECT * FROM test");  //here should i get my sql result
  res.render("test",{title:"Card",details:sql_result});
});

和db.js

module.exports = function query(sql){
  return new Promise(function(resolve,reject){
  var connection=db;
  connection.query(sql,function(err,rows,fields){
    if(err){
      return reject(err);
    }
    resolve(rows[randomRow(0,rows.length)]);
    });
  });
}