मुझे यकीन नहीं है कि यह संभव है, मैं मान रहा हूंऐसा कुछ है। मुझे कुछ JSON फाइलें मिली हैं जिनमें JSON ऑब्जेक्ट्स की एक श्रृंखला है, प्रत्येक एक अद्वितीय आईडी के साथ। मैं इन वस्तुओं को पढ़ने के लिए एक नोड एप्लिकेशन का उपयोग करने में सक्षम होना चाहता हूं और सभी ऑब्जेक्ट्स को आईडी से अधिक आईडी पैरामीटर प्रदान किया गया।
अर्थात। / बाद / 20 फाइल से सभी जेएसओएन ऑब्जेक्ट्स वापस कर देगा जिनकी आईडी 20 से अधिक है।
ये अनुरोध बहुत बार हो रहे होंगे,कई अलग-अलग उपयोगकर्ताओं द्वारा। इसलिए, मैं सोच रहा था कि इन फ़ाइलों को किसी भी तरह से स्टोर या कैश करने का कोई तरीका है जिसका अर्थ है कि उन्हें बार-बार लोड होने की आवश्यकता नहीं है। इसलिए प्रक्रिया को तेज और अधिक कुशल बनाते हैं।
उत्तर:
उत्तर № 1 के लिए 1यहां एक समाधान है जो संपूर्ण डेटासेट को स्मृति में रखेगा। मुझे लगता है कि आपके पास कम से कम नोड 0.5 है (से जेसन की आवश्यकता है), कि दो जेसन फाइलों का नाम दिया गया है json1
तथा json2
और मैं उपयोग करूंगा व्यक्त इसकी रूटिंग के कारण।
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);
//...
});
अंत में, किसी भी राउटर के पास जेसन ऑब्जेक्ट्स तक पहुंच होगी।
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);
});
जवाब के लिए 0 № 2
जहां तक मुझे पता है, यदि आप मॉड्यूल (या JSON फ़ाइल, आपके मामले में) लोड करने के लिए node.js की "आवश्यकता" फ़ंक्शन का उपयोग करते हैं, तो यह इसके फ़ाइल नाम के आधार पर कैश किया जाता है।
देख नोड.जेएस एपीआई डॉक्टर इसके बारे में।
मैं इस तकनीक का उपयोग कई परियोजनाओं के साथ एक परियोजना में कर रहा हूं और वे सभी अपने पहले लोड के बाद कैश किए जाते हैं।