我不确定这是否可行,我假设这样的事情。我有几个包含一系列JSON对象的JSON文件,每个对象都有一个唯一的ID。我希望能够使用Node应用程序来读取这些对象,并返回ID大于提供的参数的所有对象。
即。 / after / 20将返回ID大于20的文件中的所有JSON对象。
许多不同的用户会经常发生这些请求。因此,我想知道是否有办法以某种方式存储或缓存这些文件,这意味着它们不需要重复加载。因此,使过程更快更有效。
答案 0 :(得分:1)
这是一个将整个数据集保存在内存中的解决方案。我假设您至少有节点0.5(到require json),两个json文件名为json1
和json2
,我将使用express因为它的路由。
var express = require('express'),
http = require('http'),
json1 = require('./json1.json'),
json2 = require('./json2.json');
var app = express();
//Express config
app.configure(function(){
app.set('port', 8080 );
//...
app.use(express.bodyParser());
app.use(express.methodOverride());
//Right before the router, add a middleware to expose your objects
app.use(function(err, req, res, next){
req.json1 = json1;
req.json2 = json2;
next();
});
app.use(app.router);
//...
});
最后,任何路由器都可以访问这两个json对象。
app.get('/after/:id', function(req, res){
var objects = req.json1,
id = req.params.id,
result = objects.filter(function(obj){ return obj.id >= id; });
res.json(200, result);
});
答案 1 :(得分:0)
据我所知,如果你使用node.js的“require”函数来加载模块(或者你的情况下是JSON文件),它会根据文件名进行缓存。
请参阅Node.JS API Doc。
我在一个包含许多小文件的项目中使用这种技术,它们在第一次加载后都会被缓存。