[英]Express.js with EJS application bug: the edit form does not indicate the current category of the post
我正在使用Express 、 EJS和 MongoDB 開發博客應用程序(單擊鏈接以查看GitHub 存儲庫)。
我有Posts和Post Categories ,每個都有自己的收藏。
在編輯帖子表單(以及添加新帖子表單)中有一個包含可用類別的選擇框:
<% 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>
在帖子 controller 我有:
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'));
}
});
}
}
我究竟做錯了什么?
嘗試確保您正在比較 2 個字符串:
<option value="<%= category._id %>" <%= category._id.toString() == post.category._id.toString() ? 'selected' : ''; %>><%= category.cat_name %></option>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.