我尝试了一下Nodejs的postgresql驱动程序(Sequelize、Prisma)

@kenmaro在。
我平时主要发布与秘密计算、同态加密等相关的文章。
有关秘密计算综述文章,请查看以下内容。

我成为保密计算工程师已经过去了一年。
我成为保密计算工程师已经过去了两年半。

简介

Only one option is needed: 简介

在使用Node.js的驱动程序连接到PostgreSQL进行测试时,我调查了有哪些驱动程序、库和框架,并简单地总结在备忘录中。

首先要总结

有几个类似于数据库驱动程序的东西存在,其中也有几个知名的,但这两个似乎是其中最有名的。

    Sequelize

如果想要简单地连接到数据库并具备ORM功能,使用这样的库似乎是一个不错的选择。

    Prisma

从所需的文件夹结构等方面来看,它更像一个框架而不是一个库。如果你需要深入开发和构建网页应用等方面的内容,尝试使用它可能是一个不错的选择。它似乎越来越受欢迎了。

我尝试过两种方法,但由于我是为了快速测试的目的,最终我主要使用了Sequelize。

环境搭建

用Docker轻松搭建开发环境比在本地构建PostgreSQL更简单方便,虽然也可以在本地构建。

version: "2"
services:
  mysql:
    restart: always
    image: mysql:latest
    ports: ["3306:3306"]
    environment:
      MYSQL_DATABASE: 'test'
      MYSQL_ROOT_PASSWORD: 'password'
      MYSQL_USER: 'postgres'
      MYSQL_PASS: 'password'
    volumes:
      - /mnt/data/mysql:/var/lib/mysql
  pgdb:
    container_name: pg_db
    image: postgres:latest
    ports: ["5432:5432"]
    environment:
      - POSTGRES_PASSWORD=password"
    command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]

如果您事先准备好可以轻松搭建 MySQL 和 PostgreSQL 的 docker-compose.yml,那将非常方便。

请用中文翻译以下内容,并给出一种选项:
在此yml文件的同一级目录下,

$docker-compose up -d pgdb

让我们启动开发PostgreSQL。

一旦启动后,我们将使用名为psql的客户端CLI库进行连接测试。
默认情况下,已配置了一个名为“postgres”的用户和一个名为“postgres”的数据库,
密码是在docker-compose中指定的。

因此,连接命令为

psql -U postgres -h localhost -d postgres

请问。

接下来,您可以自己创建开发用户,也可以创建开发数据库。如果觉得麻烦的话,可以暂时使用默认用户postgres和数据库postgres。

请查看我之前总结的关于在psql中操作数据库的命令的文章。

Sequelize 是一个用于 Node.js 的流行的 ORM(对象关系映射)库。

公式可以从这里获取。

我們在引導過程中參考了以下內容。

连接建立的参数等可参考这里:
https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-constructor-constructor

我会实际连接一次。
不管文件夹结构等等,只需要index.js就足够了,所以可以快速尝试。

mkdir nodetest
cd nodetest
npm init -y
npm install --save sequelize
npm install --save pg pg-hstore
touch index.js
const { Sequelize, Model, DataTypes, QueryTypes } = require('sequelize');
//const sequelize = new Sequelize('sqlite::memory:');
const sequelize = new Sequelize('postgres', 'user', 'password', {
  host: 'localhost',
  port: 8088,
  dialect: 'postgres',
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

class Test extends Model {}
Test.init({
  c1: DataTypes.STRING,
}, { sequelize, modelName: 'test' });

(async () => {
  await sequelize.sync();
  //const res = await Test.findAll();
  //const res = await sequelize.query(`SELECT * FROM "test"`, { type: QueryTypes.SELECT });
  const res = await sequelize.query('SELECT id FROM "test"', { type: QueryTypes.SELECT });
  console.log("here done");
  console.log(res);
  //const jane = await Test.create({
  //  username: 'janedoe',
  //});
  //console.log(jane.toJSON());
})();


node index.js

应该能够接收到查询结果了。

智能棱镜

我对Prisma这个应用所见的文章并不多,但我觉得最合适的是跟随并尝试了前两篇文章。

但是,我认为试着简单快速测试可能有点繁琐的步骤。

综上所述

最近,我个人专注地使用Firebase,并且久违地研究了一下Node.js的库,感觉非常有意思。

我是否应该调查一下其他语言的驱动程序呢、、

这次就到这吧。

@kenmaro 请用汉语母语对以下内容进行改写。只需提供一种选项:

@kenmaro

广告
将在 10 秒后关闭
bannerAds