Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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
Node.js Mongoose是否使用用户输入在数据库中使用express.js查找结果?_Node.js_Mongodb_Forms_Express_Mongoose - Fatal编程技术网

Node.js Mongoose是否使用用户输入在数据库中使用express.js查找结果?

Node.js Mongoose是否使用用户输入在数据库中使用express.js查找结果?,node.js,mongodb,forms,express,mongoose,Node.js,Mongodb,Forms,Express,Mongoose,我对mongoose/mongo和express是新手,所以我不知道该怎么做。因此,基本上我尝试使用复选框对数据库中的结果进行排序 下面是my db中的一个示例: { "location" : "PHARMACY", "region" : "SOCAL", "system" : "WITS", "contact" : "SMITH", "membership" : "TIER1" } 到目前为止,我只知道如何像这样硬编码,在这里我做了Environment.find({region:“SOCA

我对mongoose/mongo和express是新手,所以我不知道该怎么做。因此,基本上我尝试使用复选框对数据库中的结果进行排序

下面是my db中的一个示例:

{ "location" : "PHARMACY",
"region" : "SOCAL",
"system" : "WITS",
"contact" : "SMITH",
"membership" : "TIER1" }
到目前为止,我只知道如何像这样硬编码,在这里我做了
Environment.find({region:“SOCAL”})
,它将包含SOCAL作为一个区域的所有db条目吐出:

var express = require("express"),
  app = express(),
  mongoose = require("mongoose"),
  bodyParser = require("body-parser");

mongoose.connect("mongodb://localhost/epims", {
  useNewUrlParser: true,
  useUnifiedTopology: true
});
app.use(bodyParser.urlencoded({ extended: true }));
app.set("view engine", "ejs");

//schema setup
var environmentSchema = new mongoose.Schema({
  name: String,
  region: String,
  system: String,
  contact: String,
  membership: String,
});

var Environment = mongoose.model("Environment", environmentSchema);

app.get("/environments/show", function(req, res) {
  //find environment with selected parameters
  Environment.find({region: "SOCAL"}, function(err, foundEnvironment) {
    if (err) {
      console.log(err);
    } else {
      //render show template with that env
      res.render("show", { environment: foundEnvironment });
    }
  });
});
如何使数据库中的搜索根据所做的选择而改变

这是我的选择表,如果有人也需要看的话

<form action="/environments" method="GET">
    <legend>Locations</legend>
    <input type="checkbox" name="location" value="PHARMACY">
    <label for="PHARMACY">PHARMACY</label>

    <input type="checkbox" name="location" value="OFFICE">
    <label for="OFFICE">OFFICE</label>

    <input type="checkbox" name="location" value="STORE">
    <label for="STORE">STORE</label>

    <legend>Regions</legend>
    <input type="checkbox" name="region" value="SOCAL">
    <label for="SOCAL">SOCAL</label>

    <input type="checkbox" name="region" value="NORCAL">
    <label for="NORCAL">NORCAL</label>

    <input type="checkbox" name="region" value="WA">
    <label for="WA">WA</label>

    ...
<a href="/environments/show">Submit</a>
</form>

位置
药房
办公室
贮藏
区域
索卡尔
诺卡尔
华盛顿州
...

您可以通过搜索查询传递搜索参数:
/environments/show?位置=办公室和位置=商店和地区=SOCAL和地区=NORCAL

GET
请求生成此数据库查询:

{ 
  region: { '$in': [ 'SOCAL', 'NORCAL' ] },
  location: { '$in': [ 'OFFICE', 'STORE' ] } 
}
app.get(“/environments/show”,函数(req,res){
设region=[req.query.region | |[]].flat();
let location=[req.query.location | |[]]flat();
让查询={
地区:{
“$in”:区域
},
地点:{
“$in”:位置
}
};
查找(查询,函数(err,foundEnvironment){
如果(错误){
控制台日志(err);
}否则{
//使用该环境渲染显示模板
res.render(“show”,{environment:foundEnvironment});
}
});
});

位置
药房
办公室
贮藏
区域
索卡尔
诺卡尔
华盛顿州
...
提交

您可以通过搜索查询传递搜索参数:
/environments/show?位置=办公室和位置=商店和地区=SOCAL和地区=NORCAL

GET
请求生成此数据库查询:

{ 
  region: { '$in': [ 'SOCAL', 'NORCAL' ] },
  location: { '$in': [ 'OFFICE', 'STORE' ] } 
}
app.get(“/environments/show”,函数(req,res){
设region=[req.query.region | |[]].flat();
let location=[req.query.location | |[]]flat();
让查询={
地区:{
“$in”:区域
},
地点:{
“$in”:位置
}
};
查找(查询,函数(err,foundEnvironment){
如果(错误){
控制台日志(err);
}否则{
//使用该环境渲染显示模板
res.render(“show”,{environment:foundEnvironment});
}
});
});

位置
药房
办公室
贮藏
区域
索卡尔
诺卡尔
华盛顿州
...
提交

您需要API代码方面的帮助吗?那么从这个表单中,输入是如何流向API端点的呢?正如我看到的,这是一个GET端点,这些输入是否作为查询参数流动?如果是,那么您可以获取这些值并形成DB事务的查询。您可以发布您的整个服务器代码吗?如果要解析get请求的任何主体(例如,用于express的json中间件),则应使用url中的搜索查询。在get请求中,不应发送正文/数据,因为get请求不应基于正文数据进行处理。要使用正文时,可以使用
POST
或任何其他方法payload@Marc嘿,是的,很抱歉,我使用了bodyparser,刚刚添加了上面的服务器代码!即使我只是想从数据库中检索信息,也会使用POST请求吗?@Emily,你想用什么就用什么。当您只想获取一些数据时,Get是非常好的。如果要将某些数据从客户端传输到服务器,请使用PUT或POST。请看一下REST规范,以便更好地理解API代码是否需要帮助?那么从这个表单中,输入是如何流向API端点的呢?正如我看到的,这是一个GET端点,这些输入是否作为查询参数流动?如果是,那么您可以获取这些值并形成DB事务的查询。您可以发布您的整个服务器代码吗?如果要解析get请求的任何主体(例如,用于express的json中间件),则应使用url中的搜索查询。在get请求中,不应发送正文/数据,因为get请求不应基于正文数据进行处理。要使用正文时,可以使用
POST
或任何其他方法payload@Marc嘿,是的,很抱歉,我使用了bodyparser,刚刚添加了上面的服务器代码!即使我只是想从数据库中检索信息,也会使用POST请求吗?@Emily,你想用什么就用什么。当您只想获取一些数据时,Get是非常好的。如果要将某些数据从客户端传输到服务器,请使用PUT或POST。为了更好地理解,请看一下REST规范