在Node.js+Express中引入PostgreSQL
背景
我想开发一个连接数据库的Web应用程序。
考虑到我熟悉使用的Express框架以及最终打算在Heroku上发布,我想使用PostgreSQL。
请注意,这篇文章更像是我的备忘录,请谅解。
环境
-
- Windows 10
-
- Express 4.16.0
-
- PostgreSQL 11.3
- pg 7.11.0
安装PostgreSQL
请在谷歌上搜索”安装PostgreSQL”,会有相关的方法显示出来,请参考它们进行安装。
为样本准备数据库。
- 创建一个名为”mydb”的数据库。
psql -U postgres mydb
パスワード:
输入密码时,请输入在安装PostgreSQL时指定的密码。
输入时可能看起来没有输入任何内容,但只要输入正确的密码并按下Enter键,就可以连接到数据库。
2. 创建员工表。
CREATE TABLE Staff (
id CHAR(4) NOT NULL,
name TEXT NOT NULL,
age INTEGER ,
PRIMARY KEY (id));
3. 在员工表中随意创建记录。
INSERT INTO staff VALUES (1, 'taro', 21), (2, 'Jiro', 20), (3, 'Saburo', 18);
4. 一般来说,需要确认是否已成功创建了记录
SELECT * FROM staff;
创建应用程序
- 任意给予一个名称并创建一个Express应用程序。
express -e practice_postgres
cd practice_postgres
npm install
2. 安装所需的模块node-postgres进行这次操作。
npm install pg --save
3. 客户端代码的描述
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<p><%= datas %></p>
</body>
</html>
4. 服务器端的描述
var express = require('express');
var router = express.Router();
var pg = require('pg');
router.get('/', function(req, res, next) {
var pool = pg.Pool({
database: 'mydb',
user: 'postgres', //ユーザー名はデフォルト以外を利用している人は適宜変更してください。
password: 'PASSWORD', //PASSWORDにはPostgreSQLをインストールした際に設定したパスワードを記述。
host: 'localhost',
port: 5432,
});
pool.connect( function(err, client) {
if (err) {
console.log(err);
} else {
client.query('SELECT name FROM staff', function (err, result) {
res.render('index', {
title: 'Express',
datas: result.rows[0].name,
});
console.log(result); //コンソール上での確認用なため、この1文は必須ではない。
});
}
});
});
module.exports = router;
为了让事情更加清晰易懂,在这里我们从{id: 1, name: ‘taro’, age: 21}中获取Taro,并在客户端进行显示,这是通过datas: result.rows[0].name来实现的。
5. 确认执行结果
在编写上述代码后,进行显示确认。
npm start
最后的话
从没有关于PostgreSQL的知识的状态开始,我写下了这篇文章作为备忘录。
总之,由于我已经实现了从Express连接到PostgreSQL的最基本要求,所以接下来我将探索如何使用Heroku Postgres在Heroku上发布应用程序的方法。
如果有任何建议,请在评论中提出。感谢您。
补充
在连接到 Heroku Postgres 时,在创建表格和记录后,将以下代码中的 database 等信息更改为在 Heroku 上的相关内容(※)。
※ 可以在 heroku 应用的 Resources > Heroku Postgres > 设置 中查看。
var pool = pg.Pool({
database: 'mydb',
user: 'postgres', //ユーザー名はデフォルト以外を利用している人は適宜変更してください。
password: 'PASSWORD', //PASSWORDにはPostgreSQLをインストールした際に設定したパスワードを記述。
host: 'localhost',
port: 5432,
});
另外,如果主机名仍为localhost,将抛出错误。
添加2
关于连接到Heroku Postgres的详细信息,请参考此文章。
补注3
在这篇文章中概述了使用异步/等待的模式。
给你们一个选项自己选择,我只需要一个:追记4。
我在这篇文章中整理了考虑到SQL事务的代码。
我自以为这篇文章中的代码非常通用。
请提供相应的引用资料。
请注明参考文献。
https://www.postgresql.jp/document/11/html/
PostgreSQLの使い方(公式だけど、わかりにくい)
https://qiita.com/aoi_erimiya/items/a37890fb4719357f7f87
PostgreSQLの使い方(こちらのほうが参考になる)
https://qiita.com/Shitimi_613/items/bcd6a7f4134e6a8f0621
PostgreSQLのコマンド一覧
https://node-postgres.com/features/connecting
node-postgresモジュール
Node.jsでDBに接続するアプリのサンプルコード載っている(参考になる!)