如何使用通过数据模型排序的下拉菜单值查询 Mongoose?

Posted

技术标签:

【中文标题】如何使用通过数据模型排序的下拉菜单值查询 Mongoose?【英文标题】:How to query Mongoose using drop down menu values that sort through data model? 【发布时间】:2017-08-19 08:27:04 【问题描述】:

使用 mongoimport,我在 Mongoose 的帮助下向我的节点应用程序添加了一个包含 100,000 行数据的 csv 文件。在我的视图页面上,我能够访问所有 100,000 行并正确显示每条信息,但是我的应用程序的目的是允许用户选择该数据的参数并仅返回该 csv 文件的特定行符合该标准的。比如我的数据如下:

标题:姓名、州、学位 第 1 行:Gary,印第安纳州,本科 第 2 行:卡尔,佛罗里达州,博士 第 3 行:Tina,威斯康星州,大师赛 第 4 行:马特,佛罗里达州,大师赛

我的选择选项如下所示:

<div class="select_menu">
  <label>Select State</label>
  <select name="select_state" id="select_state">
    <option value="IN">Indiana</option>
    <option value="FL">Florida</option>
    <option value="WI">Wisonsin</option>
    <option value="etc">ETC</option>
  </select>
  <label>Select Degree</label>
  <select name="select_degree" id="select_degree">
    <option value="PhD">PhD only</option>
    <option value="Masters">PhD and Masters</option>
    <option value="Undergraduate">PhD, Masters, and Undergraduate</option>
  </select>
</div>

这将是我的查询参数:

var selectState = document.getElementByID('select_state')
var selectDegree = document.getElementByID('select_degree')

var query = Data.find( 

STATE: selectState.value, 
DEGREE: selectDegree.value

).limit(10);

数据(整个 CSV 文件)通过 data.controller 推送到 data.ejs 视图页面,即:

const Data = require('../models/data');


module.exports = 
  showDatas: showDatas


function showDatas(req, res) 
  Data.find(, (err, datas) => 
    console.log(datas[0]);
    res.render('pages/data', datas: datas);
  );

我只是不知道如何将上述查询应用于数据模型,一旦它被传递到视图页面。我知道我可以使用 jQuery 并在选择下拉列表旁边的“提交”按钮上使用 onclick 函数,但我应该将实际函数放在哪里?完全迷路了,非常感谢任何帮助。

【问题讨论】:

【参考方案1】:
    const Data = require('../models/data');


module.exports = 
    showDatas: showDatas



function showDatas(req, res) 

    //query will catch the params url after ? 
    //params will catch the body params? 

    var queryJson=;

    if(req.query.selectState)
        queryJson.STATE=req.query.selectState;
    


    if(req.query.selectDegree)
        queryJson.DEGREE=req.query.selectDegree;
    

    Data.find(queryJson, (err, datas) => 
        console.log(datas[0]);
        res.render('pages/data', datas: datas);
    );

选择框更改时重新加载页面并将参数附加到请求网址

【讨论】:

以上是关于如何使用通过数据模型排序的下拉菜单值查询 Mongoose?的主要内容,如果未能解决你的问题,请参考以下文章

BIEEBI Publisher下拉菜单设置

如何使用Javascript根据先前的下拉值显示第二个下拉列表

多个 <select> 下拉列表作为 sql 参数 | PHP

更改下拉列表时替换 URL 查询字符串值

我如何测试使用硒在下拉菜单中按字母顺序对项目进行排序

如何创建可搜索的下拉菜单?