首页 > 解决方案 > Node.js:复选框未将数据保存在数据库中

问题描述

试图将选中的流派复选框数据保存到数据库中。但是,它不是在保存数据……而是为流派保存一个空数组

试图按照这个线程发送数据,这个线程。他们都没有,为我工作

我已为此附加了创建控制器和表单。

BookController 创建:

exports.bookCreate = [
    (req, res, next) => {
        if(!(req.body.genre instanceof Array)){
            if(typeof req.body.genre==='undefined')
            req.body.genre=[];
            else
            req.body.genre=new Array(req.body.genre);
        }
        next();
    },
    async(req, res, next) => {
            const errors = validationResult(req);

            const book = await new Book({
                title   : req.body.title,
                genre   : req.body.genre,
            });

            if (!errors.isEmpty()) {
                async.parallel({
                    genres: (callback) => {
                        Genre.find(callback);
                    },
                }, (error, values) => {
                    if(error) return next(error);

                    // Mark Selected Genres as Checked
                    for (let i = 0; i < values.genres.length; i++) {
                        if (book.genre.indexOf(values.genres[i]._id) > -1) {
                            values.genres[i].checked='true';
                        }
                    }

                    res.render('./book/create', {
                        title   : 'Create Book',
                        genres  : values.genres,
                        book    : book,
                        errors  : errors.array()
                    });
                });

                return;

            } else {
               book.save((error) => {
                  if(error) return next(error);
                     res.redirect('./');
               });

            }
        }
];

创建.ejs:

if errors
        .alert.alert-danger(role='alert')
            ul
                for error in errors
                    li!= error.msg 

    form(method='POST' action='')

        div.form-group
            label(for='title') Title:
            input#title.form-control(type='text', placeholder='Name of Book' name='title' value=(undefined===book ? '' : book.title) )

        div.form-group
            label Genre:
            div
                for genre in genres
                    div(style='display: inline; padding-right:10px;')
                        input.checkbox-input(type='checkbox', name='genre', id=genre._id, value=genre._id, checked=genre.checked)
                        label(for=genre._id) #{genre.name}

        button.btn.btn-primary(type='submit') Submit

任何帮助,将不胜感激。

标签: javascriptnode.jsexpressmongooseejs

解决方案


推荐阅读