javascript - 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
任何帮助,将不胜感激。
解决方案
推荐阅读
- ios - 添加垂直间距约束导致与高度冲突
- sql - 随后几天的区块的最小和最大日期
- flutter - 我们如何一次为整个应用程序设置背景图像?
- multipartform-data - K6 FormData 输出与常规 fromdata 不同
- powershell - Get-ChildItem : 未找到网络路径
- android-livedata - 使用 LiveData 观察 SDK 方法的结果
- python - 使用 Huggingface 从头开始训练语言模型时的问题
- google-api - 如何使用服务帐户而不使用客户端库从 Google Analytics Core Reporting API 获取信息
- image-processing - 如何从一个文件夹中批量将 2 个图像合并为 1 个?
- r - r magick:向图像添加文本会导致字体错误