跳到主要内容
CNode

如何保证对于一次网络请求,有一个对应的全局变量

问答
Jjj0920发布于 11 年前最后回复 11 年前
1556200

可以做到这一点吗

查看回复

回复 (15)

W
wyTrivail#1511 年前
引用 jj0920@wyTrivail 我需要在持久层获取这个变量,如果沿途一直传递req对象是不合理的

@jj0920 这个变量是一个什么样的变量,这个变量是如何生成的呢,是否每个请求对应的这个变量都是不一样的?

H
huangshaohui#1411 年前

req,res这两个变量是贯穿整个请求的,而且可以传递给中间件。把你的值挂载这两个变量里。

J
jj0920#1311 年前
引用 wyTrivail用一个middleware,将该变量注入进req。

@wyTrivail 我需要在持久层获取这个变量,如果沿途一直传递req对象是不合理的

W
wyTrivail#1211 年前

用一个middleware,将该变量注入进req。

var middleware = function(req, res,next){
	req.var1 = your_var;
	next();
};
D
dayuoba#1111 年前
http.Server(function listener(function(req, res) {
	//all objects should be in listener scope
}));
J
jj0920#1011 年前
引用 Oppaahaha,前几天我也在想...... 1. 可以挂req上面,如果是express 2. 存redis里面

@Oppaa 挂req上面是固然可以的,但是那样岂不是会导致持久层和路由耦合吗 存redis里如何设置key呢?

K
kiliwak#911 年前

用domain吧. express里加个domain middleware, 然后后续的处理方法里, 就可以用process.domain.xxx来获取/设置针对这个请求的"全局变量". 只是node4已经把domain标记为deprecated, 虽然我还是不会放弃它

C
CoderIvan#811 年前

@jj0920 我也想过,有且只有一种不是办法的办法,就是值传递。。。。

1
1du1du#711 年前

diao 自豪地采用 CNodeJS ionic

P
pentium100#611 年前

请参考这个: http://www.slideshare.net/isharabash/cls-and-asynclistener 或者搜Continuation-local-storage

O
Oppaa#511 年前

3,闭包一下 也行

K
klesh#411 年前
引用 jj0920@captainblue2013 不是啊,为什么这么说

@jj0920 没有,你可以把变量放到 req / res 上面。

O
Oppaa#311 年前

haha,前几天我也在想......

  1. 可以挂req上面,如果是express
  2. 存redis里面
J
jj0920#211 年前
引用 captainblue2013你是php转过来的吧

@captainblue2013 不是啊,为什么这么说

C
captainblue2013#111 年前

你是php转过来的吧

参与回复

登录后即可参与回复。登录