【发布时间】:2014-03-12 06:34:18
【问题描述】:
我正在构建一个依赖于多选属性的搜索表单。
这是表单的代码。
<form action="/search" method="get">
<select name="q" multiple>
<optgroup label="Fruit">
<option value="peach">Peach</option>
<option value="apple">Apple</option>
<option value="pear">Pear</option>
<optgroup label="Meat">
<option value="chicken">Chicken</option>
<option value="beef">Beef</option>
<option value="pork">Port</option>
<optgroup label="Dairy">
<option value="milk">Milk</option>
<option value="cheese">Cheese</option>
<option value="yogurt">Yogurt</option>
</select>
</form>
这是 Mongoose Schema 的一部分。
// db.js
var recipeSchema = new Schema({
user_id : String,
name : String,
ingredients : [ String ],
updated_at : Date
});
这是搜索路线及其回调。
// 路由/index.js
exports.search = function(req, res) {
Recipe.find({ 'ingredients' : { $all: [req.query.q] }, 'name', function(err, recipes) {
if (err) return handleError(err);
res.render('./index', { title: "Recipe Book", recipes : recipes});
});
};
如果我传递一个值http://yourserver:3000/?q=milk,则会显示所有以牛奶为原料的食谱;但是,有两个值http://yourserver:3000/search?q=milk&q=beef 没有显示任何内容。
显示结果的视图
.row
p Welcome to #{title}
table.table
thead
th Name
tbody
each recipe in recipes
tr
td= recipe.name
我看不出我做错了什么或为什么这不起作用。任何想法将不胜感激
【问题讨论】:
标签: javascript node.js mongodb express mongoose