如何使用新的数据使用expressJS重新呈现视图?
我正在使用ExpressJS和MongooseJS(用于访问MongoDB)创build一个NodeJS清单系统。 我正在尝试实施一个search栏。 我希望用户input到search栏中,按回车键,然后查看包含数据库中所有匹配项的更新表。
目前,当用户在search栏中input后按下input键时,jQuery会使用search栏中的文本将POST发送到我的Express服务器。 使用mongooseJS,我find所有匹配。 问题是,当我再次呈现视图时,页面不会更新并向用户显示与search匹配的新信息。
这是我的路由器代码:
var express = require('express'); var router = express.Router(); var InventoryObject = require('mongoose').model('InventoryObject'); var searchdata = ''; /* GET home page. */ router.get('/', function(req, res) { var regSearch = new RegExp('.*'+searchdata+'.*', 'i'); InventoryObject.find({productId: {$regex: regSearch}}).sort('-_id').exec(function (err, data) { res.render('index', {'inventoryObjects' : data}); searchdata = ''; }); }); router.post('/', function(req, res) { searchdata = req.body.searchbar; });
一切似乎工作,除了重新渲染页面。 我做错了什么/失踪?
我发现在发布这个问题后不久,我就忘记了res.redirect('/')。 但是,我发现的解决scheme仍然不使用res.redirect('/')。 相反,我使用res.end()在后路线的末尾。 然后,我回到客户端的jQuery脚本,发射了AJAX POST,并使用成功标签来启动一个location.reload()。
客户端POST
$.ajax({ url: '/', type: 'POST', contentType: 'application/json', data: JSON.stringify({ type:'search', searchbar: ($('#searchbar').val()) }), success: function (data) { location.reload(); } });
服务器端,添加res.end()
var express = require('express'); var router = express.Router(); var InventoryObject = require('mongoose').model('InventoryObject'); var searchdata = ''; /* GET home page. */ router.get('/', function(req, res) { var regSearch = new RegExp('.*'+searchdata+'.*', 'i'); InventoryObject.find({productId: {$regex: regSearch}}).sort('-_id').exec(function (err, data) { res.render('index', {'inventoryObjects' : data}); searchdata = ''; }); }); router.post('/', function(req, res) { searchdata = req.body.searchbar; res.end(); });
你是否肯定要这样做?
success: function (data) { location.reload(); }
为什么不用这个调用获取更新后的库存数据,并在成功函数中使用它来更新页面?
- 使用Node和Express构buildAngular应用程序时,是否有必要使用JADE?
- 错误:找不到模块'../build/Debug/sqlclient'
- 从Req.User()获取信息到ExpressJS中的Req.params()
- 如何将浏览器端的客户端值传递给node.js控制器
- 在Ubuntu 14.节点和NVM安装破坏任何想法我应该做什么?
- 节点101:未定义app.use ReferenceError
- dynamic地将处理程序添加到快速路由function
- 如何在路由器文件中获取应用程序(在Node / Express应用程序中)
- 使用Express与NodeJS结合REST API的最佳实践