Javascript 在nodejs中访问resonse的结果
我想访问nodejs中的响应数据 我在redis中有用于缓存的中间件。若redis中存在数据,则返回数据,若不存在,则返回数据库并返回数据 我的问题是数据库中不存在数据 我想在redis中不存在数据时,从数据库中获取数据,在向客户端发送数据时,将数据设置为redis 我为redis缓存创建了一个middlware:Javascript 在nodejs中访问resonse的结果,javascript,node.js,Javascript,Node.js,我想访问nodejs中的响应数据 我在redis中有用于缓存的中间件。若redis中存在数据,则返回数据,若不存在,则返回数据库并返回数据 我的问题是数据库中不存在数据 我想在redis中不存在数据时,从数据库中获取数据,在向客户端发送数据时,将数据设置为redis 我为redis缓存创建了一个middlware: module.exports = new (class RedisMiddllware { Cache(req, res, next) { redis.Get
module.exports = new (class RedisMiddllware {
Cache(req, res, next) {
redis.Get(req.path).then((response)=>{
if (response !== null) {
new OkObjectResult(response).Send(res);
} else {
next();
}
}).catch((error)=>{
throw new Error(error)
})
}
})();
我想在next()之后设置数据代码>在redis中,但当我使用res
时,它不会显示返回数据
我通过以下方式返回数据:
res.status(400).json({
message: success,
data:{
"isDelete": false,
"_id": "5f4134984cb63a0ca49a574d",
"name": "Farsi",
"flag": "IR",
"unit": "Rial",
"createDate": "Sat Aug 22 2020 19:37:04 GMT+0430 (Iran Daylight Time)",
"createBy": "kianoush",
"__v": 0,
"updateBy": "kianoush",
"updateDate": "Sat Aug 22 2020 20:38:23 GMT+0430 (Iran Daylight Time)",
"deleteDate": "Sun Aug 23 2020 13:31:07 GMT+0430 (Iran Daylight Time)",
"deleteby": "kianoush",
"id": "5f4134984cb63a0ca49a574d"
},
statusCode:200,
success: true,
});
在resonse中执行next()
之后,如何访问middllware中的结果数据?NodeJS中间件按顺序独立执行,并在执行“response.send()”或等效命令后立即停止执行。简单地说,如果在端点上定义了3个中间件功能(md1、md2、md3)。然后节点将首先调用md1,如果md1执行“response.send()”,则根本不调用md2和md3。如果md1执行“next()”,则调用md2,但它不知道md1。而且,它与函数调用树不同,在函数调用树中,控件在执行md2后返回md1
所有这些理论都不存在了,您需要在从数据库中获取结果后将其放入Redis缓存中,在相同的函数中,您将调用数据库,并可能执行“response.json()”操作
请看回复:
它不使用Redis缓存,但您会找到实现所需的必要逻辑。NodeJS中间件按顺序独立执行,并在执行“response.send()”或等效命令后立即停止执行。简单地说,如果在端点上定义了3个中间件功能(md1、md2、md3)。然后节点将首先调用md1,如果md1执行“response.send()”,则根本不调用md2和md3。如果md1执行“next()”,则调用md2,但它不知道md1。而且,它与函数调用树不同,在函数调用树中,控件在执行md2后返回md1
所有这些理论都不存在了,您需要在从数据库中获取结果后将其放入Redis缓存中,在相同的函数中,您将调用数据库,并可能执行“response.json()”操作
请看回复:
它不使用Redis缓存,但您会找到实现所需的必要逻辑。在响应中next()
之后,如何访问中间件中的结果数据
回答:不可以,next()
是该函数的结尾。您必须将调用的下一个函数保存到Redis。在响应中next()
之后,如何访问中间件中的结果数据
回答:不可以,next()
是该函数的结尾。您必须将调用的下一个函数保存到Redis。如何在响应中发送状态400和状态代码200?真的吗?@Talg123这并不重要。这不是真实的数据您如何在响应中发送状态400和状态代码200?真的吗?@Talg123这并不重要。这不是真实的数据