我正在制作一个显示文字帖子的主页,作为更大项目的一部分。当用户发送/主页的GET请求时,通过
返回res.render('home', {
user: req.ping_session,
posts: p_l
});
p_l是我的mongoDB数据库返回的数组。
问题是,我正在尝试更新帖子列表而不重新加载页面,我不知道如何更新“帖子”而不通过JS将其保存为某个全局变量。有没有办法只更新帖子列表? 我也想过通过套接字做这件事,但我认为这不是必要的。
我真的很感谢你们的帮助,因为我对Node很陌生。
提前致谢! :)
代码可以在这里找到: https://github.com/mkocs/ping/tree/testing https://github.com/mkocs/ping/blob/testing/routes/routes.js< - 我的路由文件返回页面 https://github.com/mkocs/ping/blob/testing/views/home.jade< - 返回的页面
答案 0 :(得分:1)
如果没有在当前状态下重新加载页面,就无法重新加载帖子。
您的应用程序当前的工作方式是它接收HTTP请求,处理它然后向浏览器吐出(呈现)一些数据。然后该连接终止。在您呈现页面之后,除非他们向您发送新请求,否则您无法与浏览器通信,在这种情况下,您将无法将第一个请求与第二个请求相关联(IP地址除外)不是你应该依赖的东西。)
您可能希望查看websockets(我推荐socket.io作为节点),这是一种不同于常规HTTP请求的连接类型,其中浏览器和服务器保持连接并来回传递消息,而不是而不是一个请求 - 响应。
许多网站都使用websockets来做这样的事情。他们经常使用混合物。例如,当您进入Stack Overflow时,您会发出一个Web请求来呈现您正在查看的页面,但是SO也会为一些小事件维护一个websocket,例如,用户有一个新的收件箱中的通知'。在您的情况下,您可以触发一个告诉客户的事件,嘿,您的用户有一个等待他/她的新帖子。收到后,您可以使用AJAX(从浏览器创建常规HTTP请求的方法)加载下一篇文章。
希望这会给你一些指导。