带有不同mongo的GET请求在同一页面上找到结果

时间:2019-03-08 17:29:10

标签: node.js mongodb express mongoose

我希望我的网站的顶部有一个搜索栏,可以从mongo数据库返回单个文档(墨水)。在同一页面上,我希望能够从同一数据库访问所有文档。

由于我只能将一个结果发送到URL,因此我很难在一页上弄清楚该怎么做。

是否可以通过某种方式将所有文档发送到页面,然后在客户端使用AJAX进行搜索?我是编码的新手,想知道我是否要解决这个错误。

感谢您的帮助。这是我的代码的一部分,它将我想要的结果发送到不同的页面。

app.get("/", function(req, res){

// FIND ONE INK FROM DB
  var noMatch = null;
  if(req.query.search) {    
    Ink.find({ink: req.query.search}, function(err, foundInk){
      if(err){
        console.log(err);
    } else {
        if(foundInk.length < 1) {
          noMatch = "No match, please try again.";
      }
        res.render('new-index', {ink: foundInk, locationArray: locationArray, noMatch: noMatch })
      }
    });
  } else {

    // FIND ALL INKS FROM DB
    Ink.find({}, function(err, allInks){
      if(err){
          console.log(err);
      } else {
        res.render("index", {ink: allInks, locationArray: locationArray, noMatch: noMatch });
      }
    });
  }
});

2 个答案:

答案 0 :(得分:0)

理想情况下,您是这样创建端点的。

( id parameter is optional here...thats why the '?' )   
www.example.com/api/inks/:id?


// return all the inks
www.example.com/api/inks

// return a specific ink with id=2
www.example.com/api/inks/2

因此,现在您可以通过/inks渲染所有链接,并使用端点/ink/:id?

搜索特定墨水。

希望这会有所帮助!

答案 1 :(得分:0)

您可以为每个请求使用单独的端点。对于完全访问请求,可以呈现页面,调用res.render,对于搜索请求,可以返回json调用res.json。像这样:

app.get("/", function(req, res){
  // FIND ALL INKS FROM DB
  Ink.find({}, function(err, allInks){
    if(err){
      console.log(err);
    } else {
      res.render("index", {ink: allInks, locationArray: locationArray, noMatch: noMatch })
    }
  });
})

app.get("/search", function(req, res) {
  // FIND ONE INK FROM DB
  var noMatch = null;
  Ink.findOne({ink: req.query.search}, function(err, foundInk){
    if(err){
      console.log(err);
    } else 
      if(!foundInk) {
        noMatch = "No match, please try again.";
      }

      res.json({ink: foundInk, locationArray: locationArray, noMatch: noMatch })
    }
  });
});

请注意在Ink.findOne处理程序中对/search的调用,该调用将仅返回一个文档。

这样,您可以向/ search发出AJAX请求,并解析从服务器返回的json。

我创建了一个样本库,其中的问题完全相同here