我希望我能尽可能详细地总结我的问题。我是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(),新值也永远不会被应用两个功能。
感谢您的帮助,请告诉我是否应该提供更多信息。
答案 0 :(得分:0)
您可以切换到json而不是ini,然后使用我的json-update
模块。