Skip to main content

Models

Boardz is using Mongoose to manage it's database and these are the models that define on how the data is structured and relations/references are made.

User Model​

User model is just a standard user object that is stored in the database

  • Email
  • Username
  • Userpic
  • Password
  • Posts (list of posts by user)
  • Message (list of messages by user)
  • Timestamps : Enabled
const userSchema = new Schema(
{
email: {
type: String,
required: true,
},
username: {
type: String,
required: true,
},
userpic: {
type: String,
default: "https://i.ibb.co/B2v65By/default.png",
},
password: {
type: String,
required: true,
},
posts: [{ type: Types.ObjectId, ref: "Post" }],
messages: [{ type: Types.ObjectId, ref: "Message" }],
},
{ timestamps: true }
);

Board Model​

  • Author : userID
  • BoardTitle
  • BoardContent
  • Likes: Array of userID.length === totalLikes
  • Comments : Array of CommentModel
  • Timestamps : Enabled
const boardPostSchema = new Schema(
{
author: {
type: Types.ObjectId,
ref: "User",
required: true,
},
boardTitle: {
type: String,
required: true,
},
boardContent: {
type: String,
required: true,
},
likes: [
{
type: Types.ObjectId,
ref: "User",
},
],
comments: [
{
type: Types.ObjectId,
ref: "Comment",
},
],
},
{ timestamps: true }
);

Comment Model​

  • Comment Author : userID
  • Comment Content
  • Comment Likes : Array of userID.length === totalLikes
  • Timestamps : Enabled
const commentSchema = new Schema(
{
commentAuthor: {
type: Types.ObjectId,
ref: "User",
required: true,
},
commentContent: { type: String, required: true },
commentLikes: [
{
type: Types.ObjectId,
ref: "User",
},
],
},
{ timestamps: true }
);

Message Model​

  • Message Author : userID
  • Messsage Content
  • Timestamps : Enabled
const messageSchema = new Schema(
{
messageAuthor: {
type: Types.ObjectId,
ref: "User",
required: true,
},
messageContent: { type: String, required: true },
},
{ timestamps: true }
);