Javascript 如何使用node、mongoose处理复选框
这是Javascript 如何使用node、mongoose处理复选框,javascript,node.js,forms,post,mongoose,Javascript,Node.js,Forms,Post,Mongoose,这是ejs文件,其表单通过循环数据库包含多个复选框输入。并发送post请求,然后由app.post <form action="/" method="post"> <% users.forEach(function(user) { %> <tr> <td style="text-align: center;&quo
ejs
文件,其表单通过循环数据库包含多个复选框输入。并发送post请求,然后由app.post
<form action="/" method="post">
<% users.forEach(function(user) { %>
<tr>
<td style="text-align: center;">
<input type="checkbox" value="<%= user.username %>" name="username">
</td>
</tr>
<% }) %>
</form>
但如果用户选中多个复选框,则返回一个列表。但是我不能在列表中循环多次,并且res.render
,因为它会抛出一个已经发送的头错误。如何处理这个
else {
users.forEach(function(user) {
User.findOne({"username":user}, function(err, foundUser) {
if(err) {console.log(err)}
else {
if(foundUser) {
}
}
})
})
我对网络开发还是新手。如果需要更多信息,请询问。谢谢。请不要这样:
users = req.body.username
if (typeof users == 'string') {
User.findOne({ "username": users }, function(err, foundUser) {
if (err) { console.log(err) } else {
if (foundUser) {
res.render("queuedUsers", { users: foundUser })
}
}
})
} else {
users.forEach(function(user) {
User.findOne({ "username": user }, function(err, foundUser) {
if (err) { console.log(err) } else {
if (foundUser) {}
}
})
})
}
使用以下命令:
// if users is string make it an array
if (typeof users == 'string')
users = [users];
// then you only need a single User.find and no if/else statement
// use $in operator to find all users in one query
User.find({"username": { $in: users }}, function(err, foundUsers) {
if(err) // render error page
return res.render('500');
res.render("queuedUsers", { users: foundUsers || [] });
})
// if users is string make it an array
if (typeof users == 'string')
users = [users];
// then you only need a single User.find and no if/else statement
// use $in operator to find all users in one query
User.find({"username": { $in: users }}, function(err, foundUsers) {
if(err) // render error page
return res.render('500');
res.render("queuedUsers", { users: foundUsers || [] });
})