gpt4 book ai didi

node.js - 如何使用expressJS使用新数据重新渲染 View ?

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:51 25 4
gpt4 key购买 nike

我正在使用 ExpressJS 和 MongooseJS 创建 NodeJS 库存系统(用于访问 MongoDB)。我正在尝试实现一个搜索栏。我希望用户在搜索栏中输入内容,按 Enter 键,然后查看更新后的表格,其中包含数据库中的所有匹配项。

目前,当用户在搜索栏中输入后按 Enter 时,jQuery 会向我的 Express 服务器发送一个 POST,其中包含搜索栏中的文本。使用 mongooseJS,我找到所有匹配项。问题是,当我再次渲染 View 时,页面不会更新并向用户显示与搜索匹配的新信息。

这是我的路由器代码:

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('/') 。但是,我发现有效的解决方案仍然不使用 res.redirect('/')。相反,我在 post 路由的末尾使用了 res.end() 。然后,我返回到触发 AJAX POST 的客户端 jQuery 脚本,并使用 success 标记启动 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();
});

关于node.js - 如何使用expressJS使用新数据重新渲染 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25895288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com