Javascript 在页面中更改后获取MongoDB集合

Javascript 在页面中更改后获取MongoDB集合,javascript,node.js,mongodb,express,pug,Javascript,Node.js,Mongodb,Express,Pug,现在我正在与Jade、NodeJS和MongoDB以及Monk合作创建一个网站 我希望发生的是,页面中有一个更新(在本例中,用户移动google maps),然后使用新参数(更新的纬度和经度)再次从数据库中获取集合,然后该集合用于更新页面上的项目(搜索显示新经纬度区域中的项目) 下面是get的nodejs代码,它当前只显示数据库中的所有内容 router.get('/search', function(req, res) { var db = req.db; var collec

现在我正在与Jade、NodeJS和MongoDB以及Monk合作创建一个网站

我希望发生的是,页面中有一个更新(在本例中,用户移动google maps),然后使用新参数(更新的纬度和经度)再次从数据库中获取集合,然后该集合用于更新页面上的项目(搜索显示新经纬度区域中的项目)

下面是get的nodejs代码,它当前只显示数据库中的所有内容

router.get('/search', function(req, res) {
    var db = req.db;
    var collection = db.get('items')
    collection.find({},{},function(e,docs){
       res.render('searchAll', {
          "itemlist" : docs
       });
    });
});
还有翡翠密码

each item, i in itemlist
   #{item.stuff}
还有一些javascript代码,当用户移动地图(并获取新的纬度和经度)时激活,我不会显示这些代码,因为它可以工作

那么,如何使用新的纬度和经度调用数据库并重新运行jade代码,以显示更新的itemList呢

编辑

我现在可以从数据库中获取数据,并将其显示在页面上,但是如何让jade(或js?)重复新数据并将其显示在页面上呢

button(onclick="httpGet('/afibo5')")
  | Click
p#response

script(type='text/javascript').
  function httpGet(theUrl){
    //document.write(theUrl);
    $.get(
      theUrl, 
      { id: "532169"}, 
      function(responseText){
        document.getElementById("response").innerHTML=responseText;
      }
    );
  }
试试这个:

var _ = require("lodash");
router.get('/search', function(req, res) { 
    req.query = _.pick(req.query, ['lat', 'lon']); // filter query param for exact parameters, if they will not exist it will be empty object
    // query mongo for documents with given lat, lon
    req.db.get('items').find(req.query,{},function(e,docs){
        res.render('searchAll', { "itemlist" : docs }); 
    });
});

// for ajax calls, responds with json, that have to be iterated and rendered using frontend code
router.get('/api/search', function(req, res) { 
    req.query = _.pick(req.query, ['lat', 'lon']);
    req.db.get('items').find(req.query,{},function(e,docs){
        res.json({ "itemlist" : docs }); 
    });
});

Bind to click event to do:window.location.href='/search?lat=5&lon=10';

谷歌搜索一切,我不知道如何解决这个问题,我通常是一名后端开发人员,对javascript没有太多经验。我基本上希望能够按下一个按钮,该按钮查询数据库并在当前页面上显示结果。好的,我可以n现在从数据库获取数据,并将其显示在页面上,但是如何让jade对新数据进行重复?res.render会这样做,它会获取视图文件并使用新数据进行渲染。但是如果您请求使用Ajax,请告诉我我将更改代码。哦,我明白了,但是我如何让javascript重新加载页面?现在,如果我单击按钮,它就会成功所以有两个版本的页面。或者只是页面的一个特定部分(即:只需要更改正文)绑定到click event to do:window.location.href='/search?lat=5&lon=10';但我希望它是无缝的,不需要重定向或刷新页面使用jquery.ajax并将get请求发送到/api/search(从我的代码示例中添加额外的路由)成功了,我将我的jade循环移动到了一个新的.jade,获得了呈现该页面的res,然后将id=response更新到responsetext