Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Mongoose/Express中搜索使用select multiple构建的数组_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 如何在Mongoose/Express中搜索使用select multiple构建的数组

Javascript 如何在Mongoose/Express中搜索使用select multiple构建的数组,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我正在构建一个依赖于选择多属性的搜索表单 这是表格的代码 <form action="/search" method="get"> <select name="q" multiple> <optgroup label="Fruit"> <option value="peach">Peach</option> <option value="apple">Apple</option>

我正在构建一个依赖于选择多属性的搜索表单

这是表格的代码

<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>
以下是搜索路径及其回调

//routes/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,所有以牛奶为原料的配方都会显示出来;然而,两个valueshttp://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

我看不出我做错了什么,也看不出为什么这不起作用。如果您有任何想法,我们将不胜感激。

请将我的答案完全修改为正确的:

console.log(req.param('q'));

调用.param函数将正确地将参数编译成数组。

我认为问题在于我将req.query.q包装在数组符号[]中。它已作为数组传入。我这样说是因为console.logreq.query.q使用单个查询值搜索?q=Peach显示Peach,使用多个查询值搜索?q=Peach&Apple显示数组['Peach','Apple']。

完全修改了我的答案,使之更加有用。威尔,谢谢你的回复。我认为问题在于我将req.query.q包装在数组符号[]中。它已作为数组传入。我这样说是因为console.logreq.query.q使用单个查询值search?q=Peach显示Peach,而使用多个查询值search?q=Peach和Apple显示数组['Peach','Apple']。
console.log(req.param('q'));