Javascript 在页面中更改后获取MongoDB集合
现在我正在与Jade、NodeJS和MongoDB以及Monk合作创建一个网站 我希望发生的是,页面中有一个更新(在本例中,用户移动google maps),然后使用新参数(更新的纬度和经度)再次从数据库中获取集合,然后该集合用于更新页面上的项目(搜索显示新经纬度区域中的项目) 下面是get的nodejs代码,它当前只显示数据库中的所有内容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
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