2015-11-02 4 views
0

В настоящее время я установил мои курьерские настройки приложения в app.js как так:экспресс-настройки приложения хранятся в отдельном файле

app.set('siteCategoryNo', '900'); 
app.set('brandCompanyName', 'Website Name'); 
app.set('brandDomainName', 'website.com'); 

Вместо этого я хотел бы хранить их в отдельном файле приложения-config.js как так:

/* 
* app-config.js 
*/ 
module.exports = function() { 

    var appSettings = { 

     settings: [{ 
      key: 'siteCategoryNo', 
      val: '900' 
     }, { 
      key: 'brandCompanyName', 
      val: 'website name' 
     }, { 
      key: 'brandDomainName', 
      val: 'website.com' 
     }] 

     // all other settings omitted 

    } 

    return appSettings; 

}; 

Это то, что app.js будет выглядеть так:

// all other code omitted 
var configSettings = require('./app-config.js')(); 

for (var i = 0; i <= configSettings.settings.length; i++) { 
    var applicationSettings = configSettings.settings.pop(); 
    app.set(applicationSettings.key, applicationSettings.val); 
} 

Я делаю это так, потому что я создаю почти идентичный сайт с другим разработчиком, но у нас есть разные настройки и маршруты. Мы надеемся, что это упростит процесс слияния.

Петля над ассоциативным массивом (если это то, что вы называете) работает только тогда, когда массив объектов находится в файле app.js. Я хотел бы разделить это на app-config.js, но как только я сделаю, ни один из моих варов не установлен.

Возможно ли это?

+0

Кажется, у вас есть ошибка на единицу в 'for' цикла. Это должно быть строгим знаком '<' в условии цикла. – Thevs

+0

Спасибо @Thevs Я с тех пор заменил его на цикл forEach, который предложен ниже, MinusFour. –

ответ

1

Вы можете сделать это следующим образом:

module.exports = function (app) { 

    var appSettings = { 

     settings: [{ 
      key: 'siteCategoryNo', 
      val: '900' 
     }, { 
      key: 'brandCompanyName', 
      val: 'website name' 
     }, { 
      key: 'brandDomainName', 
      val: 'website.com' 
     }] 

     // all other settings omitted 

    } 

    appSettings.settings.forEach(function(setting){ 
     app.set(setting.key, setting.val); 
     }); 
    return app; 
}; 

, а затем из app.js:

var express = require('express'); 
var app = require('configFile')(express()); 
+0

Мне нравится это решение, но есть ли причина указывать ключ для 'key' и ключ для' value'? – nick

+0

Это ключ для ключа установки и 'val' для значения настройки. Он соответствует значению функции ['app.set (key, val)'] (http://expressjs.com/api.html#app.set). – MinusFour

+0

Благодаря @MinusFour это работает как шарм. Престижность! –

Смежные вопросы