我尝试了一下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