node.js - 如何使用节点 pg 在 ejs 中呈现 postgresql 结果?
问题描述
我是 node/express/postgres 的新手,正在尝试构建一个简单的 todo 应用程序。我正在尝试使用 ejs 文件呈现视图,但页面不显示查询结果,而是显示查询本身:
(request, response) => { pool.query('SELECT * FROM items ORDER BY id ASC', (error, results) => { if (error) { throw error } response.status(200).json(results.rows) }) }
我在 queries.js 文件中生成查询:
const Pool = require('pg').Pool
const pool = new Pool({
user: '*',
host: 'localhost',
database: 'todo',
password: '*',
port: 5432,
})
const getAllItems = (request, response) => {
pool.query('SELECT * FROM items ORDER BY id ASC', (error, results) => {
if (error) {
throw error
}
response.status(200).json(results.rows)
})
}
module.exports = {
getAllItems
}
并在 app.js 文件中调用它:
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
const db = require('./queries');
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json())
var todoDbList = db.getAllItems;
var itemNames = db.getAllItemNames;
//All todo information
app.get('/items',function(req, res) {
res.render("allItemInfo.ejs", {
todoDbList: db.getAllItems
});
});
然后在 EJS 文件中渲染:
<body>
<div><h1>Hello World</h1></div>
<div><%= todoDbList %> </div>
</body>
我在这里缺少什么来查看 div 中的查询结果而不是查询本身?
解决方案
回答我自己的问题,以防其他人有类似的问题。
重新配置querys.js文件中的getAllItems函数来渲染.ejs文件并传入查询结果
const getAllItems = function(req, res) {
const sql = 'SELECT * FROM items ORDER BY id ASC';
pool.query(sql, (error, results) => {
if (error) {
throw error;
}
res.render("allItemInfo.ejs", {todoDbList: results.rows})
})
};
调用 app.js 文件中的函数
//all todo information
app.get('/todos', db.getAllItems);
推荐阅读
- python - screen.nodelay(True) 用-1的对角线填充终端并阻止输入
- ios - 即使没有互联网连接也能获得数据响应
- json - 如何重命名 pyspark 生成的 JSON?
- mysql - 来自同一个表的内连接
- java - 元组是否将值和参数作为索引隐藏起来?
- android - 新的 Facebook SDK 应用程序不可用:您尝试使用的应用程序不再可用或访问受到限制
- c# - Linq to sql - 使用新实体保存多级嵌套子级
- powershell - 我可以在不使用 CSV 文件的情况下在一行中组合命令并传递变量吗
- python - TensorFlow Lite 对象检测 iOS 不适用于自定义训练模型
- c# - 是否可以在 CoreCLR 3 上运行为 .NET Core 2.2 编译的 .NET 代码?