【问题标题】:How to search an array built with a select multiple in Mongoose/Express如何在 Mongoose/Express 中搜索使用选择倍数构建的数组
【发布时间】: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&amp;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


    【解决方案1】:

    完全修改我的正确答案:

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

    调用 .param() 函数会将参数正确编译成数组。

    【讨论】:

    • 完全修改了我对更有用的答案。
    • 威尔,谢谢您的回复。我认为问题在于我将 req.query.q 包装在数组符号 [] 中。它已经作为数组传入。我这样说是因为 console.log(req.query.q) 使用单个查询值 search?q=Peach 显示 Peach 并使用多个查询值 search?q=Peach&Apple 显示数组 ['Peach', 'Apple']。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2022-07-22
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 2017-05-21
      • 2020-11-03
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多