请问 koa2 controllers 怎样处理全局变量或者支持多个用户同时访问网页?
发布于 6 年前 作者 eastOffice 2561 次浏览 来自 问答

大家好, 我第一次接触nodejs,正在写一个类似问卷调查的网站,在controllers中需要用一些全局变量来保存用户的结果,但是这些全局变量应该怎样处理呢? 我目前的办法是在controllers 中声明全局变量,比如: var result = []; var post_start = async (ctx, next) => { … }); var post_next = async (ctx, next) => { result.push(ctx.body.request.xxx) … }); 但是这样写的问题就是,当一个用户填到一半,另一个用户也来访问网页的时候,会引起全局变量值的冲突,所以我想能不能给每一个用户单独绑定一份这些变量呢? 于是我想到了用 ctx 传递参数,我参考文档,把参数绑定到 ctx.state 中,但是发现不行,比如在第一个 async() 函数中绑定,到下一个 async() 就没有这些变量了。

请问大家,我应该怎样解决这个问题? 这个问题核心是为了解决多个用户同时访问网页的问题,除了以上问题,是否有什么多线程的处理办法? 感激不尽!

3 回复

试试存数据库吧,mongodb或redis或mysql都行。。。

来自✨ Node.js开源项目精选

@vendar 谢谢,但用数据库的话,每次跳转网页都要进行数据库的一次读写,是不是非常麻烦?我还是想能先把所有结果都存好,再一次性写入。

@eastOffice 每次网页访问请求一次数据库不算麻烦,可以封装到中间件里面自动处理即可

来自✨ Node.js开源项目精选

回到顶部