Detta koncept är centrala i relationsdatabaser och kallas relationsmodellen. Det är även användbart i NoSQL databaser.
// Definerar vår schema för kommentarermodellen
const commentSchema = new mongoose.Schema({
text: String,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
}
});En skriven text och författare till varje kommentar
ID hämtas från den användare som skriver kommentaren till inlägget
Användarnamnet hämtas från den användare som skriver kommentaren till inlägget
// Definerar vår postschema
const postSchema = new mongoose.Schema({
title: String,
image: String,
body: String,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
comments: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Comment"
}]
});En författare till varje inlägg
ID och användarnamn hämtas från den användare som skriver inlägget
Här kan vi lagra varje referens (ID) till kommentaren som skrivs till inlägget (som en array)
| Sökväg | HTTP metod | Beskrivning |
|---|---|---|
| /posts/:id/comments/new | GET | Visa formulär för ny kommentar |
| /posts/:id/comments | POST | Skapa ny kommentar |
För enkelhetens skull lägger vi denna i postRoutes.js
Visa formulär för att skapa ny kommentar (views/comments/new.js)
Visa varje ny kommentar (views/posts/show.ejs)
Let's code!