Javascript 在nodejs中访问resonse的结果

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

我想访问nodejs中的响应数据

我在redis中有用于缓存的中间件。若redis中存在数据,则返回数据,若不存在,则返回数据库并返回数据

我的问题是数据库中不存在数据

我想在redis中不存在数据时,从数据库中获取数据,在向客户端发送数据时,将数据设置为redis

我为redis缓存创建了一个middlware:

 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这并不重要。这不是真实的数据