Я работаю над приложением для ведения блога (нажмите на ссылку, чтобы увидеть репозиторий GitHub ) с Express, E JS и MongoDB.
У меня есть сообщений и Категории сообщений , каждая в своей коллекции.
В Редактировать сообщения (а также в форме Добавить новое сообщение ) есть поле выбора с доступными категориями:
<% if (categories) { %>
<div class="form-group">
<label for="categores">Choose a post category</label>
<select id="categores" name="category" class="form-control">
<% categories.forEach(function(category, index) { %>
<option value="<%= category._id %>" selected="<%= category._id == post.category._id ? 'selected' : ''; %>"><%= category.cat_name %></option>
<% }); %>
</select>
</div>
<% } %>
Проблема в том, что что поле выбора выше не имеет категории, выбранной для записи в настоящее время . Я не могу выяснить, почему.
Это тоже не работает:
<option value="<%= category._id %>" <%= category._id == post.category._id ? 'selected' : ''; %>><%= category.cat_name %></option>
В контроллере сообщений у меня есть:
exports.editPost = (req, res, next) => {
const postId = req.params.id;
Post.findById(postId, function(err, post) {
const categories = Category.find({}, (err, categories) => {
if (err) {
console.log('Error: ', err);
} else {
res.render('admin/editpost', {
layout: 'admin/layout',
website_name: 'MEAN Blog',
page_heading: 'Dashboard',
page_subheading: 'Edit Post',
categories: categories,
post: post
});
}
});
});
}
exports.updatePost = (req, res, next) => {
const query = {
_id: req.params.id
}
const form = {
titleholder: req.body.title,
excerptholder: req.body.excerpt,
bodyholder: req.body.body
};
const errors = validationResult(req);
const post = {};
post._id = req.params.id;
post.title = req.body.title;
post.short_description = req.body.excerpt
post.full_text = req.body.body;
post.category = req.body.category;
if (req.file) {
post.post_image = req.file.filename;
}
if (!errors.isEmpty()) {
req.flash('danger', errors.array())
res.render('admin/editpost', {
layout: 'admin/layout',
website_name: 'MEAN Blog',
page_heading: 'Dashboard',
page_subheading: 'Edit Post',
form: form,
post: post
});
} else {
Post.update(query, post, function(err) {
if (err) {
console.log(err);
return;
} else {
req.flash('success', "The post was successfully updated");
req.session.save(() => res.redirect('/dashboard'));
}
});
}
}
Что я делать неправильно?