2016-03-21 7 views
2

При использовании сильного замыкания я хочу проверить базу данных для accesstoken и существования пользователя в каждом запросе.Выполнение запроса с помощью промежуточного программного обеспечения

Так я делаю код промежуточного слоя:

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

Я добавил его: начальный»промежуточного слоя 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 здесь, но я понятия не имею о как я могу это сделать, мне, вероятно, просто нужен доступ к переменной «приложение» или напрямую «доступ к источнику данных».

Любая помощь с оценкой.

ответ

1

Чтобы получить доступ к "приложение" переменной от использования промежуточного

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

1

Из документов «Использование переменных в промежуточном программном обеспечении» (https://docs.strongloop.com/display/LB/Defining+middleware#Definingmiddleware-Usingvariablesinvalues) похоже, что вы можете передать любую часть объекта приложения с помощью этого синтаксиса: ${var}. Свойство datasource существует под основным объектом приложения, поэтому вы должны иметь возможность передать его таким образом.

+0

Спасибо, я на самом деле решил, но не смог опубликовать ответ. Ответ на самом деле прост, и я просто отправлю его прямо сейчас. нам просто нужно сделать var xyzModel = req.app.xyzModel; –

+0

Ах хорошо. Поэтому я предполагаю, что функция, связанная с выше, может считаться альтернативой. :) –

+0

, вероятно, да, но я не вижу фактического использования, если вы не хотите, чтобы что-то очень специфическое не было в «приложении» –