Как получить доступ к переменным, установленным с помощью app.set() в express js
Как получить доступ к переменным, установленным с помощью выражения app.set()
, например,
app.set('view engine','jade');
app.set('jsDirectory',/js/');
Из руководства я понимаю, что я могу получить доступ к тому же, используя app.get(<key>)
, но это вывод console.log(app.get('view engine'))
.
{ router:
{ app:
{ stack: [Object],
domain: null,
_events: [Object],
_maxListeners: 10,
_connections: 0,
connections: [Getter/Setter],
allowHalfOpen: true,
_handle: null,
httpAllowHalfOpen: false,
cache: {},
settings: [Object],
redirects: {},
isCallbacks: {},
_locals: [Object],
dynamicViewHelpers: {},
errorHandlers: [],
route: '/',
routes: [Circular],
router: [Getter],
root: 'C:\\Users\\Shahal\\Works\\App',
models: {},
extensions: {},
disconnectSchemas: [Function: disconnectSchemas],
passport: [Object] },
routes: {},
params: {},
_params: [],
middleware: [Function] } }
Ответы
Ответ 1
Они становятся доступными через объект app.settings:
app.set('oneSetting', 'one');
app.set('twoSetting', 'two');
app.set('view engine','jade');
console.log(app.settings.oneSetting);
console.log(app.settings.twoSetting);
console.log(app.settings['view engine']);
Ответ 2
Я знаю, что это 2 года, но это еще первая ссылка, которая появляется в Google, поэтому я подумал, что это может быть уместно.
Вы также можете настроить свою переменную
app.set('port', 3000);
И позже получите его с помощью
app.get('port');
Я предпочитаю этот подход, потому что он короче и более прямолинейный. Это также способ, которым они используются в Экспресс 4.x документации.
app.get(name)
Returns the value of name app setting, where name is one of strings in the app settings table.
Ответ 3
app.set('view engine','hbs')
**All are correct:**
app.get('view engine')
app.locals.settings['view engine']
app.settings['view engine']