У меня есть этот маршрут для подписчиков. Используя req.params.id, все работает хорошо и смог передать запрашиваемый идентификатор пользователя пользователю.
проблема теперь в моем EJS, где, если за пользователем следят, и появляется кнопка отмены подписки, но кнопка отслеживания все еще отображается. Есть ли способ, что, если я откажусь от пользователя, будет отображена кнопка «Подписаться»?
это мой код
router.get('/follow/:id', isLoggedIn, async function(req, res) {
try {
let user = await User.findById(req.params.id)
if(req.user.id === req.params.id) {
req.flash('error', 'You cannot add yourself')
res.redirect('back')
} else {
user.followers.addToSet({_id: req.user._id} );
user.save();
req.flash('success', 'Successfully followed ' + user.local.username +
'!');
res.redirect('back');
}
} catch(err) {
req.flash('error','Author is already added');
res.redirect('back');
}
});
router.delete('/follow/:id', isLoggedIn, async function(req, res) {
try {
let user = await User.findByIdAndUpdate(req.params.id);
user.followers.pull(req.user.id);
user.save();
req.flash('success', 'Successfully unfollowed ' + user.local.username +
'!');
res.redirect('back');
} catch(err) {
req.flash('error', err.message);
res.redirect('back');
}
});
пользовательская схема
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const Schema = mongoose.Schema;
const Service = require('../models/services')
const Review = require('../models/review')
// Create a schema
const userSchema = new Schema({
local: {
email: {
type: String,
lowercase: true,
unique: true,
},
password: {
type: String,
require: true
},
notifications: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Notification'
}
],
followers: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
}
],
Профиль .ejs
<% layout('./layouts/boilerplate') -%>
<div class="container-fluid profilecard">
<div class="profile-card">
<div class="image-container">
<div class="img-thumbnail">
<img class="img-fluid" src="<%= user.local.images.url %>"
style= "width: 100%;">
</div>
<div class="title">
<p><h2 class="text-center"> <%=user.local.username %>
<%=user.facebook.name %></h2></p>
</div>
</div>
<div class="follow justify-content-center">
<a href="/users/follow/<%= user.id %>"><button class="btn btn-
primary">Follow <%= user.local.username %></button></a>
<% user.followers.forEach(function(follower){ %>
<% if(currentUser &&
currentUser._id.equals(follower.id)) {%>
<form id="delete-btn" action="/users/follow/<%= user.id%>?
_method=DELETE" method="POST">
<button class="btn btn-
danger">Unfollow</button>
</form>
<% } %>
<% }) %>
</div>
Я пытался добавить еще <% = currentUser._id! == follower._id, это не работает </p>
Нужен совет здесь