前言
此文章作为一个解决问题的记录笔记,不会特别详细,会简要的介绍 Prisma
与 Mongodb
和基本的使用
什么是 Prisma
这是 Prisma 的介绍
翻译过来为
"Prisma 是一个基于 Nodejs 和 TypeScript 的 ORM,它可以帮助开发者以 更快的开发速度 和 更少的错误 来 管理数据库。"
关于是 ORM (Object/Relational Mapping),简单的来说就是一个可以像操作对象一样操作数据库的工具。 具体 ORM 介绍可以参看 阮一峰 老师的《ORM 实例教程》
prisma 使用
- 项目初始化
run
npm init --yes
- 安装
prisma
run
yarn add -D prisma
ornpm i -D prisma
- 生成
prisma
项目配置
run
npx prisma init
运行以上命令终端显示
并且目录会自动生成 prisma/schema.prisma
以及 .env
文件
/// schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
# .env
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"
- 配置
schema.prisma
文件
/// schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
- provider = "postgresql"
+ provider = "mongoodb"
url = env("DATABASE_URL")
}
+ model User {
+ id Int @id @default(autoincrement())
+ email String @unique
+ name String?
+ }
# .env
- DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"
+ DATABASE_URL="mongodb://localhost:27017"
本文讲解主题是 prisma
+ mongodb
所以不会讲解其他的内容
schema.prisma
配置纬度主要包含以下 3 点:
DB
连接的配置
Prisma Client
配置
data model
定义
schema.prisma
配置参看 Prisma schema
开启 mongodb
确保现在你的环境已经有了 mongodb
- 配置
mongod.conf
文件
### mongod.conf
# 系统日志配置
systemLog:
destination: file
logAppend: true
path: path # 自己选择文件路径
# 存储数据的配置
storage:
dbPath: dbPath # 自己选择文件路径
journal:
enabled: true
processManagement:
# 不在后台运行
fork: false
# 网络配置
net:
port: 27017
bindIp: 127.0.0.1
security:
# authorization: enabled
run
mongod --config configFilePath/mongd.conf
configFilePath
为你 mongod 配置文件的路径
启动 prisma
run
npx prisma db push
当前控制台报错
错误描述你需要创建一个副本。您可以使用基于云的 Mongo,也可以在本地创建如下所示的副本。
以下为解决方案 - 创建副本集
-
连接当前开启的数据库
run
mongo --port 27001
# mongod.conf ... replication: # 此为 prisma 本地连接 mongodb 的关键部分 replSetName: "customName" ...
-
创建副本
run
rs.initiate( { _id : "customName", members: [ { _id: 0, host: "localhost:27001" } ] })
customName
为配置副本集的自定义名称host
为创建副本集数据库的地址
如过数据库开启了 authorization
需要登录完成之后在使用以上命令创建副本集
结语
本文主要讲解的本地 mongodb
+ prisma
当然 云mongo
的话就不需要这么麻烦,设置这个副文集
# .env
DATABASE_URL="mongodb+srv://test:test@cluster0.ns1yp.mongodb.net/myFirstDatabase"
参考文献
Prisma Mongodb can't create a user model - stackoverflow