将 node.js sql 结果返回到其他文件

Posted

技术标签:

【中文标题】将 node.js sql 结果返回到其他文件【英文标题】:Return node.js sql result to other file 【发布时间】:2021-09-30 04:14:41 【问题描述】:

我想创建一个网站,我可以在其中显示我的 mysql 数据库的结果。 我完成了网站和 sql 查询,但我坚持要返回我的 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;));

我努力将查询中的“行”返回到我的 app.js 文件并在 'app.get("/") 中使用它。

【问题讨论】:

【参考方案1】:

在第一个文件中,您应该要求其他文件能够使用其功能。 并且由于它返回一个承诺,您可以使用 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)]);
    );
  );

【讨论】:

谢谢你,伙计。我是等待函数的新手。

以上是关于将 node.js sql 结果返回到其他文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在Node.js中执行IO任务序列[重复]

node.js 异步使用 SQL

如何使用 promise 将数组从我的模块返回到我的 API?异步函数和承诺 - Node.js

从 node.js 获取 bigquery 结果到浏览器

Firebase 函数 Node.js 转换流

Node.js 中的回调地狱