Так что, в принципе, проблема в том, что я хочу выяснить, как я могу проверить, был ли пользователь тем, кто написал это сообщение, если это был пользователь, я хочу отобразить кнопку редактирования и кнопку удаления, поскольку он был тот, кто его создал, но если нет, то я не хочу, чтобы эти кнопки отображались, потому что я не хочу, чтобы пользователи, которые не создавали свои собственные сообщения, удаляли или редактировали сообщения других людей.
Пара важных кодов:
model.js
const mongoose = require("mongoose"),
Schema = mongoose.Schema,
bcrypt = require("bcryptjs");
const postSchema = new Schema({
title: String,
description: String,
context: String,
author: {
type: Schema.Types.ObjectId,
}
});
const userSchema = new Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true,
},
password: {
type: String,
required: true
},
posts: [postSchema]
});
userSchema.pre("save", async function save(next) {
const user = this;
if (!user.isModified("password")) return next();
const hashedPassword = await bcrypt.hash(user.password, 10);
user.password = hashedPassword;
next();
});
const Post = mongoose.model("Post", postSchema);
const User = mongoose.model("User", userSchema);
module.exports = {
User,
Post
}
post.ejs
<main class="post-detail">
<h1><%= post.title %></h1>
<h2><%= post.description%></h2>
<p><%= post.context%></p>
<% if (post.author === user) { %>
<a href="/posts/edit-post/<%= post._id %>">Edit Post</a>
<a href="/posts/deleted-post/<%= post._id %>">Delete Post</a>
<% } %>
</main>
экспортируемая функция в контроллере администратора
exports.getPost = async (req, res) => {
try {
const post = await Post.findById(req.params.postId);
const user = await User.findOne({_id: req.user});
res.render("admin/post", {
post: post,
pageTitle: post.title,
path: "/posts",
user: user
})
} catch (err) {
console.log(err);
}
}
Вот еще одна экспортированная функция, в которой я пытался получить сообщения, только если пользователь был автором этих сообщений, поскольку он перенаправляет на страницу myposts
exports.getMyPostsPage = async (req, res) => {
const posts = await Post.find({
author: req.user
})
res.render("admin/myposts", {
path: "/myposts",
pageTitle: "My Posts",
posts: posts
})
}