在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
20190611a.PNG

最后的话

从没有关于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に接続するアプリのサンプルコード載っている(参考になる!)

广告
将在 10 秒后关闭
bannerAds