正在读取节点中的配置文件
Reading Configuration File in Node
我希望能尽可能详细地总结我的问题。我是NodeJS的新手,所以要友善:D
我正在节点中编写一个应用程序,允许人们在Plex媒体库中查看统计数据。我将配置存储在文件config.ini
中。文件中的设置包括:应用程序的url库,应用程序将在其上运行的端口,他们的Plex用户名&密码、要在索引上显示的电影或剧集的数量以及一些其他设置。我有一个配置模板&路由,允许他们更新这些设置,并使用新值更新文件。
我的问题在于如何让Node动态读取这个文件。当用户通过我的config.js
路由器更新配置时,需要重新启动应用程序才能读取新值。(有些事情,比如url_base/port,需要重新启动应用程序,我稍后会处理)但简单的事情,比如更改要显示的电影或剧集数量,不需要重新启动。
例如,看看我的index.js
路线,它显示了少量信息:
var express = require('express');
var Q = require('q');
var util = require('util');
// Define router
var router = express.Router();
// Load config
var UserConfiguration = require('../lib/config');
var config = new UserConfiguration();
// Load plex
var Plex = require('../lib/plex');
var plexClient = new Plex({
hostname: config.getPlexHost(),
port: config.getPlexPort(),
username: config.getPlexUser(),
password: config.getPlexPassword(),
token: config.getPlexAuthToken()
});
// Plex is down or we couldn't get in
if(plexClient.ping() !== true) {
res.render('pages/index', {
page_title: 'home',
plexRecentMovies: null,
plexRecentEpisodes: null
});
}
// Retrieve new episodes, pass in config setting for limit
function recentlyAddedEpisodes(req, res, next) {
var recentEpisodes = plexClient.shows()
.then(function (showSection) {
return showSection.key;
})
.then(function(key) {
plexClient.getRecentlyAddedEpisodes(key, config.getRecentEpisodes())
.then(function(episodes) {
req.recentlyAddedEpisodes = episodes;
return next();
});
});
}
// Retrieve new movies, pass in config setting for limit
function recentlyAddedMovies(req, res, next) {
var recentMovies = plexClient.movies()
.then(function (movieSection) {
return movieSection.key;
})
.then(function(key) {
plexClient.getRecentlyAddedMovies(key, config.getRecentMovies())
.then(function(movies) {
req.recentlyAddedMovies = movies;
return next();
});
});
}
function renderIndexPage(req, res) {
res.render('pages/index', {
page_title: 'home',
plexRecentMovies: req.recentlyAddedMovies,
plexRecentEpisodes: req.recentlyAddedEpisodes
});
}
// Finally render the template
router.get('/',
recentlyAddedEpisodes,
recentlyAddedMovies,
renderIndexPage
);
module.exports = router;
我确信我这样做的方式不正确,因为router.get()之外的所有东西似乎都被缓存了,所以即使我在其他两个函数中调用config.getSomeSetting(),新值也永远不会被应用。
谢谢你的帮助,如果我应该提供更多信息,请告诉我。
您可以切换到json而不是ini,然后使用我的json-update
模块。
相关文章:
- 使用javascript配置文件作为handlebas博客模板,但配置不是't工作正常
- 我可以访问量角器配置文件中的参数吗
- 如何从配置文件中设置Angular值
- SoundCloud API-基于系统中的ID创建用户配置文件
- 先在Angular中加载配置文件,然后再加载其他文件
- 正在读取节点中的配置文件
- 检查蒸汽配置文件url是否有效
- 将配置文件文件夹移动到sdcardfirefoxmobile14.0
- 可能有一个javascript和php的配置文件
- 对CommonJS配置文件使用全局变量
- 未从Selenium网络驱动程序中的配置文件接收到正确的值
- 使用AddThis-config-data_ga_property向两个Google Analytics配置文件报告
- 如何使用浏览器“需要”配置文件,但不将此文件包含在捆绑包中
- Webdriver:用于动态禁用/启用JavaScript弹出窗口的Firefox配置文件
- 如何从 Webjar 解析多个 RequireJS 配置文件
- 通过oauth令牌passport.js访问用户配置文件
- mongodb用户配置文件添加输入时出现问题
- 如何使用ian:accounts-ui-botstrap-3根据Meteor中的用户输入设置配置文件字段值
- 带有所有用户操作的业务逻辑的Javascript配置文件
- 仅使用访问令牌在节点中获取Google+用户配置文件