通过中间件执行查询

executing query via middleware

在使用 strongloop 环回时,我想在每个请求中检查数据库中是否存在 accesstoken 和用户名。

所以我正在制作一个中间件代码:

module.exports = function() {
  return function xAuth(req, res, next) {
    console.log(req);
  };
};

我已将它添加到 :initial" 中间件 json

  "initial": {
    "compression": {},
    "cors": {
      "params": {
        "origin": true,
        "credentials": true,
        "maxAge": 86400
      }
    },
    "./middleware/trumptAuth": {},
    "helmet#xssFilter": {},
    "helmet#frameguard": {
      "params": [
        "deny"
      ]
    },
    "helmet#hsts": {
      "params": {
        "maxAge": 0,
        "includeSubdomains": true
      }
    },
    "helmet#hidePoweredBy": {},
    "helmet#ieNoOpen": {},
    "helmet#noSniff": {},
    "helmet#noCache": {
      "enabled": false
    }
  }

我想在这里执行一个 sql 查询,但我不知道我该怎么做,我可能只需要 "app" 变量访问或直接 "dataSource" 访问。

感谢任何帮助。

从文档 "Using variables in middleware" (https://docs.strongloop.com/display/LB/Defining+middleware#Definingmiddleware-Usingvariablesinvalues) 看来,您可以使用以下语法传递应用程序对象的任何部分:${var}。数据源 属性 存在于核心应用程序对象下,因此您应该能够以这种方式传递它。

要从中间件访问 "app" 变量,请使用

app.use(function(req, res, next) {
  var app = req.app;
  ...
});

要从中间件访问 "dataSource" 变量,请使用

app.use(function(req, res, next) {
  var dataSource = app.datasources.db;
  ...
});

要从中间件访问特定模型,请使用

app.use(function(req, res, next) {
  var app = req.app;
  var modelName = app.model.modelName;
  ...
});

更多methods/sources使用此文档link https://docs.strongloop.com/display/public/LB/Working+with+LoopBack+objects