我如何做一个模块.导出一个Postgres池



当我想要模块化时遇到了一个问题。导出池变量以在其他文件中使用它。我在srcdbindex.js:中有这个程序

const {Pool} = require('pg');
const express = require('express');
//Initialize
const path = require('path');
const app = express();
const fetch = require('fetch');
const PORT = process.env.PORT || 5000;
//Global Variables
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl:true
});
//Setting
app.use(express.static(path.join(__dirname, 'public')));
//Routes
app.use(require('../Routes/logIn'));
app.use(require('../Routes/singIn'));
app.use(require('../Routes/forgotPass.js'));
app.listen(PORT, () => console.log(`Listening on ${PORT}`));
module.exports = pool;

然后我需要这个文件srcRoutesLogIn.js:中的常量池

const express = require('express');
const pool = require('../db');
const router = express.Router();
router.get('/usuario/:user', function (req, res) {
//console.log("GET usuario");
var user = req.params.user;
pool.query(
`select * from users where email = '${user}' limit 1`,
function (error, resq, fields) {
if (error) {
console.log(error);
} else {
console.log(user);
res.send(resq.rows);
}
}
);
});
module.exports = router;

但当我运行index.js并转到路由ulr/usuario/:user时,在日志中我看到程序有一个错误,上面写着"pool.query不是一个函数"。我想知道如何导出const池以在其他文件中使用它。

您可以使用

module.exports = {
query: (text, params) => pool.query(text, params),
}

使用快递路由器

const Router = require('express-promise-router')
const db = require('../db')
const router = new Router()

使用

await db.query(`
SELECT * from local
`)

而不是router.get或router.post 中的pool.query

以上应该可以解决你的问题-你可以在这里查看相同的参考

https://node-postgres.com/guides/async-express

相关内容

最新更新