簡體   English   中英

Express.js 與 EJS 應用程序錯誤:編輯表單未指示帖子的當前類別

[英]Express.js with EJS application bug: the edit form does not indicate the current category of the post

我正在使用ExpressEJS和 MongoDB 開發博客應用程序(單擊鏈接以查看GitHub 存儲庫)。

我有PostsPost 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM