通过中间件执行查询

时间:2016-03-21 07:33:39

标签: middleware loopbackjs strongloop

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

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

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"访问。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

访问" 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;
  ...
});

有关更多方法/来源,请使用此文档链接 https://docs.strongloop.com/display/public/LB/Working+with+LoopBack+objects