【发布时间】:2015-02-21 17:16:04
【问题描述】:
我真的被 nodejs 缓存系统卡住了。我的项目有这个结构:
Project/
apps/
jobs_processor/
app.js
processors.js
processors/
libs/
queue_manager.js
queue_manager.js 需要processors.js
var processors = require("../apps/jobs_processor/processors.js");
app.js 还需要processor.js
var processors = require("./processors.js");
如果我考虑到文档,我必须有相同的路径才能获得相同的对象,对吗?如果是这样,我该如何实现(具有相同的路径)?
谢谢。
编辑:
如果找到解决我的问题的方法。
这是queue_manager.js文件的第一个版本
var _ = require("lodash");
var Utils = require("./utilities");
var Processors = require("../apps/jobs_processor/processors");
var Logger = require("./logger");
var QUEUES_CACHE = {};
exports.createJob = createJob;
exports.getCacheObject = getCacheObject;
function createJob(name, data) {
var cacheId = name.replace(/ /g, "_");
Logger.info("Cache ID: " + cacheId);
if (!QUEUES_CACHE[ cacheId ]) {
_.each(Processors, function (processor) {
Logger.debug("PROCESSOR NAME: " + processor.name);
Logger.debug("JOB NAME: " + name);
if (processor.name === name)
QUEUES_CACHE[ cacheId ] = processor;
});
if (!QUEUES_CACHE[ cacheId ])
throw new Error("Processor for job \"" + name + "\" not found.");
}
Logger.debug(Object.keys(QUEUES_CACHE));
return QUEUES_CACHE[ cacheId ].queue.add(data);
}
function getCacheObject() {
return QUEUES_CACHE;
}
现在是同一个文件的最后一个版本
var _ = require("lodash");
var Utils = require("./utilities");
var Logger = require("./logger");
exports.createJob = createJob;
function createJob(name, data) {
var Processors = require("../apps/jobs_processor/processors");
var processor;
_.each(Processors, function (element) {
Logger.debug("Processor name: " + element.name);
if (element.name === name)
processor = element;
});
return processor.queue.add(data);
}
每次我调用createJob 方法时,我都需要processors 模块,它是我创建的每个作业处理器的数组。
【问题讨论】:
标签: javascript node.js caching require