Bài viết này chúng mình sẽ hướng dẫn cho các bạn những model chúng mình dùng để lưu database cho app.
Tổng quan

Trong MongoDB không có khái niệm khóa ngoại(foreign key, cho nên những đường ràng buộc trong hình trên các bạn chỉ nên tham khảo). Có 5 model chính ứng với 5 database mình sẽ lưu trong database là post, message, user và viewedpostmapping và carepostmapping. Sau đây là đặc tả các bảng trong database và nhóm api liên quan đến nó.
post
Schema của post:
- _id: String(id của bài đăng)
- category: String(zaloId của người gửi)
- subCategory: String(zaloId của người nhận)
- zaloId: String(zaloId của người bán)
- city: String(thành phố bán(chỉ có 2 lựa chọn Hà Nội và Hồ Chí Minh))
- district: String(quận huyện)
- status: String(trạng thái bài viết(đóng, mở))
- condition: String(tình trạng sản phẩm)
- title: String(tiêu đề bài viết)
- price: String(giá sản phẩm)
- description: String(mô tả sản phẩm)
- productDetails: Object(chi tiết sản phẩm, là kiểu json với key là thuộc tính tùy thuộc vào danh mục sản phẩm)
- images: Object(hình của sản phẩm)
- createdAt: IsoDate(thời gian mà post này được tạo lần đầu)
Ngoài ra còn có các cột khác sẽ được tạo như
__v, updateAt nhưng chúng ta không cần tới những cột này
Schema của post
Apis liên quan đến post
messsage
Lưu thông tin tin nhắn của người dùng
- sender: String(zaloId của người xem)
- receiver: String(zaloId của người nhận)
- postId: String(postId bài đăng mà 2 người này đang nói tới)
Schema của message
Apis liên quan đến message
user
Lưu thông tin của người dùng
- zaloId: String(zaloId của người xem)
- birthday: Date(sinh nhật của người dùng)
- picture: String(avatar của người dùng)
- name: String(tên của người dùng)
birthday, name và picture sẽ được lấy bằng zalo API.
Schema của user
Apis liên quan đến user
viewedpostmapping
Lưu thông tin xem bài đăng của người dùng(số lượt xem)
Schema của viewedpostmapping
Apis liên quan đến viewedpostmapping
- zaloId: String(zaloId của người xem)
- postId: String(postId của bài viết)
- count: Number(số lượt xem)
carepostmapping
Lưu thông tin quan tâm bài đăng của người dùng
- zaloId: String(zaloId của người xem)
- postId: String(postId của bài viết)
Schema của carepostmapping
Apis liên quan đến carepostmapping
Cheat APIs
Bọn mình có chuẩn bị 1 số api cheat để fake ra data nhằm mục đích hiển thị cho những người dùng mới các bạn có thể tham khảo ở đây