Bạn có thể sử dụng prisma với mongodb không

Prisma là một ORM hỗ trợ nhiều cơ sở dữ liệu phổ biến; . Khi xây dựng một Node. js kết nối với cơ sở dữ liệu MongoDB, Mongoose là lựa chọn thực tế cho nhiều nhà phát triển

Hôm nay chúng ta sẽ sử dụng Prisma và xem nó làm cho tương tác trở nên đơn giản hơn như thế nào, từ việc xác định lược đồ đến thực hiện các truy vấn tới cơ sở dữ liệu

Những gì chúng ta sẽ xây dựng

Chúng tôi sẽ xây dựng phần phụ trợ của blog cộng đồng nơi người dùng có thể

  • Tạo bài viết
  • Xem số lượt xem cho một bài đăng
  • Bình luận một bài viết
  • Upvote hoặc downvote một bình luận

Đây là lược đồ cơ sở dữ liệu của ứng dụng được thiết kế với Moon Modeler

Bạn có thể sử dụng prisma với mongodb không

điều kiện tiên quyết

Bạn phải cài đặt các công cụ sau trên máy tính của mình để làm theo hướng dẫn này

  • Nút. js 12+ - Liên kết tải xuống
  • NPM hoặc Sợi
  • MongoDB 4+ với bộ bản sao được định cấu hình. Bạn có thể định cấu hình bộ bản sao theo cách thủ công hoặc sử dụng MongoDB Atlas, cung cấp phiên bản MongoDB miễn phí với bộ bản sao

Tạo một bộ bản sao trong MongoDB với Docker Compose

Hướng dẫn này sẽ chỉ ra cách tạo một bộ bản sao trong MongoDB, sau đó sử dụng Docker soạn thảo để thực hiện thiết lập đơn giản hơn

Bạn có thể sử dụng prisma với mongodb không
Hướng dẫn về TecoEric Cabrel TIOGO

Bạn có thể sử dụng prisma với mongodb không

Tạo dự án

Trong hướng dẫn này, chúng tôi đã xây dựng một dự án khởi động cho Node. js với Typescript và sẽ sử dụng nó để khởi tạo dự án

Chạy lệnh bên dưới

git clone https://github.com/tericcabrel/node-ts-starter.git node-prisma-mongo

cd node-prisma-mongo

yarn install

yarn start

Thiết lập Prisma

Bên trong thư mục dự án, cài đặt Prisma CLI

yarn add -D prisma

Khởi tạo Prisma cho dự án của chúng tôi

yarn prisma init

Lệnh này sẽ tạo một lược đồ Prisma và một. env để đặt các biến môi trường để đưa vào ứng dụng

Thay thế nội dung của tệp

yarn add -D prisma
5 bằng mã bên dưới để đặt nhà cung cấp thành MongoDB

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mongodb"
  url      = env("DATABASE_URL")
}

Mở. env và cập nhật URL cơ sở dữ liệu thành chuỗi kết nối của phiên bản MongoDB mà bạn đã tạo trên Atlas

DATABASE_URL="mongodb+srv://:@cluster0.gbgfd.mongodb.net/?retryWrites=true&w=majority"

Replace , , with the credentials of your MongoDB Atlas instance.

Tạo lược đồ cơ sở dữ liệu

Từ hình ảnh của lược đồ cơ sở dữ liệu, chúng tôi có hai bộ sưu tập

yarn add -D prisma
6 và
yarn add -D prisma
7

Cập nhật tệp

yarn add -D prisma
5 bằng mã bên dưới

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mongodb"
  url      = env("DATABASE_URL")
}

enum Tag {
  NodeJS
  Java
  React
  GraphQL
  Spring
  Typescript
  Express
  Docker
  Jest
  Jenkins
  AWS
}

type Location {
  address String
  city    String
  country String
}

type Comment {
  text        String
  voteCount   Int
  createdAt   DateTime @default(now())
  updatedAt   DateTime @updatedAt()
}

model User {
  id            String  @id @default(auto()) @map("_id") @db.ObjectId
  email         String
  dateOfBirth   DateTime
  name          String
  location      Location[]
  createdAt     DateTime @default(now())
  updatedAt     DateTime @updatedAt()

  @@unique([email])
  @@map("users")
}

model Post {
  id            String  @id @default(auto()) @map("_id") @db.ObjectId
  title         String
  content       String
  viewCount     Int
  isPublished   Boolean
  tags          Tag[]
  createdAt     DateTime @default(now())
  updatedAt     DateTime @updatedAt()
  comments      Comment[]
  author        User   @relation(fields: [authorId], references: [id])
  authorId      String @db.ObjectId

  @@index([author])
  @@map("posts")
}

Tạo các loại từ lược đồ

Trước tiên, chúng tôi sẽ cài đặt ứng dụng khách Prisma cung cấp API để dễ dàng thực hiện các truy vấn cơ sở dữ liệu từ các mô hình của bạn.  

yarn add @prisma/client

Bây giờ chúng ta sẽ tạo các kiểu từ lược đồ Prisma

yarn prisma generate

Lệnh trên tạo các loại được xác định trong thư mục

yarn add -D prisma
9 và @prisma/client nhập các loại này

Chèn dữ liệu

Chèn dữ liệu bao gồm tạo Người dùng và Bài đăng. Trong thư mục

yarn prisma init
0, hãy tạo một tệp
yarn prisma init
1  và thêm mã bên dưới

import { PrismaClient, Tag, Prisma } from '@prisma/client';

const prisma = new PrismaClient();

export const insertUserAndPost = async () => {
  const userInput: Prisma.UserUncheckedCreateInput = {
    email: '[email protected]',
    name: 'Jon Snow',
    dateOfBirth: new Date(1995, 1, 23),
    location: {
      address: "2 Rue de l'opera",
      city: 'Paris',
      country: 'FRA',
    },
  };

  const createdUser = await prisma.user.create({
    data: userInput,
  });

  const commentsInput: Prisma.CommentCreateInput[] = [
    {
      text: 'My first comment',
      voteCount: 14,
      updatedAt: new Date(),
    },
  ];

  const postInput: Prisma.PostUncheckedCreateInput = {
    authorId: createdUser.id,
    comments: commentsInput,
    content: 'My first post text content',
    isPublished: false,
    tags: [Tag.NodeJS, Tag.Docker, Tag.GraphQL],
    title: 'My first post title',
    viewCount: 23,
  };

  const createdPost = await prisma.post.create({
    data: postInput,
  });

  console.log(createdUser);
  console.log(createdPost);
};

insertUserAndPost().then();

Chạy lệnh bên dưới để thực thi tệp

yarn ts-node src/insert-data.ts

Chúng tôi đã nhận được đầu ra sau

Bạn có thể sử dụng prisma với mongodb không
Đầu ra của dữ liệu đã được chèn

Thêm bình luận vào bài viết

Nhận xét là con của một bài đăng, còn được gọi là. Làm cách nào để thêm nhận xét mới vào bài đăng hiện có bằng Prisma Client?

Nối mã bên dưới vào tệp

yarn prisma init
1

yarn add -D prisma
0

Làm sạch cơ sở dữ liệu của bạn trước khi chạy lại mã;

Chạy lại

yarn prisma init
3 và chúng tôi nhận được đầu ra sau

Bạn có thể sử dụng prisma với mongodb không
Chèn một phần tử vào một tài liệu nhúng

Khôi phục dữ liệu

Dưới đây là một số câu truy vấn để lấy dữ liệu từ cơ sở dữ liệu, tạo một tệp

yarn prisma init
4 và thêm mã bên dưới

yarn add -D prisma
1

Chạy lệnh

yarn prisma init
5

Cập nhật dữ liệu

Tạo một tệp

yarn prisma init
6 và thêm mã bên dưới

yarn add -D prisma
2

Xóa dữ liệu

Việc xóa dữ liệu khá đơn giản với ứng dụng khách Prisma;

yarn add -D prisma
3

Lưu ý về ràng buộc toàn vẹn

Một trong những điểm khác biệt chính giữa NoSQL và cơ sở dữ liệu quan hệ là ràng buộc thực thi tính toàn vẹn đối với cơ sở dữ liệu sau. Nếu bạn cố xóa một người dùng là tác giả của một số bài đăng, hành động sẽ không thành công vì bạn nên xóa tất cả các bài đăng của anh ấy trước

Trong cơ sở dữ liệu NoSQL, việc xóa sẽ thành công, nhưng khi sử dụng Prisma, hành vi của cơ sở dữ liệu quan hệ được sao chép khi bạn xác định mối quan hệ giữa người dùng và Bài đăng

Để xóa một người dùng với tất cả các bài đăng của anh ấy, hãy cập nhật mối quan hệ trên lược đồ Prisma để cho phép xóa theo tầng

yarn add -D prisma
4

Gói (lại

Nếu bạn đã từng sử dụng Prisma trên cơ sở dữ liệu quan hệ, bạn sẽ nhận ra cách sử dụng với cơ sở dữ liệu NoSQL không có gì khác biệt. Điều này thật tuyệt vì bằng cách giữ nguyên mô hình tinh thần bất kể bạn sử dụng cơ sở dữ liệu nào

  • Bạn không cần các ORM khác cho cơ sở dữ liệu SQL và NoSQL
  • Không tải nhận thức khi viết cú pháp khác nhau tùy thuộc vào công cụ cơ sở dữ liệu
  • Việc di chuyển từ cơ sở dữ liệu SQL sang cơ sở dữ liệu NoSQL hoặc ngược lại yêu cầu ít thay đổi hơn trong cơ sở mã

Bạn có thể tìm mã nguồn trên kho lưu trữ GitHub

Theo dõi tôi trên Twitter hoặc đăng ký nhận bản tin của tôi để tránh bỏ lỡ các bài đăng sắp tới cũng như các mẹo và thủ thuật mà tôi thỉnh thoảng chia sẻ

Prisma 2 có hỗ trợ MongoDB không?

Tương tự như MongoDB, Prisma cũng cung cấp ứng dụng khách cơ sở dữ liệu mà bạn có thể sử dụng để truy vấn cơ sở dữ liệu MongoDB của mình . Khách hàng Prisma. Một trong những điểm khác biệt chính giữa hai loại này là Prisma Client nhận thức được lược đồ bạn xác định, vì vậy nó có thể giúp bạn viết các truy vấn của mình thông qua tính năng tự động hoàn thành.

Prisma sử dụng cơ sở dữ liệu nào?

Bạn có thể gặp lỗi khi sử dụng Prisma Migrate và Introspection. Chúng tôi khuyên bạn nên sử dụng PostgreSQL phiên bản 9. 6 trở lên .

Làm cách nào để di chuyển MongoDB bằng Prisma?

Quy trình chung để thực hiện di chuyển với Prisma như sau. .
Điều chỉnh tệp mô hình dữ liệu để phản ánh lược đồ mong muốn mới
Chạy triển khai prisma1 để áp dụng các thay đổi và thực hiện di chuyển API Prisma (và có khả năng là) cơ sở dữ liệu MongoDB bên dưới)

MongoDB không phù hợp để làm gì?

Một trong những nhược điểm của MongoDB là không hỗ trợ giao dịch . Mặc dù ngày càng có ít ứng dụng yêu cầu giao dịch nhưng vẫn có một số ứng dụng cần giao dịch để cập nhật nhiều tài liệu/bộ sưu tập. Nếu đó là chức năng cần thiết cho nhóm của bạn thì không nên sử dụng MongoDB.