hi - blog

prisma + mongodb 本地开发

prisma + mongodb 本地开发

前言

此文章作为一个解决问题的记录笔记,不会特别详细,会简要的介绍 PrismaMongodb 和基本的使用

什么是 Prisma

这是 Prisma 的介绍

prisma_production

翻译过来为

"Prisma 是一个基于 Nodejs 和 TypeScript 的 ORM,它可以帮助开发者以 更快的开发速度 和 更少的错误 来 管理数据库。"

关于是 ORM (Object/Relational Mapping),简单的来说就是一个可以像操作对象一样操作数据库的工具。 具体 ORM 介绍可以参看 阮一峰 老师的《ORM 实例教程》

prisma 使用

  1. 项目初始化

run npm init --yes

  1. 安装 prisma

run yarn add -D prisma or npm i -D prisma

  1. 生成 prisma 项目配置

run npx prisma init

运行以上命令终端显示

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"
  1. 配置 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

  1. 配置 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

当前控制台报错

prisma_error

错误描述你需要创建一个副本。您可以使用基于云的 Mongo,也可以在本地创建如下所示的副本。

以下为解决方案 - 创建副本集

  1. 连接当前开启的数据库

    run mongo --port 27001

    # mongod.conf
    ...
    replication:
        # 此为 prisma 本地连接 mongodb 的关键部分
        replSetName: "customName"
    ...
    
  2. 创建副本

    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

Deploy a Replica Set - MongoDB

Mongodb 副本集搭建失败的原因 - CSDN

Current profile photo
© 2022 hi - blog
京ICP备2022015573号-1