मैं निम्नलिखित कोडभंडारण फ़ाइलों और
gridfs.js नेवला निम्नलिखित कोड है कि फ़ाइल बाइट्स लिखते
exports.putFile = function(path, name, options, fn) {
var db;
db = mongoose.connection.db;
options = parse(options);
options.metadata.filename = name;
return new GridStore(db, name, "w", options).open(function(err, file) {
if (err) {
return fn(err);
}
return file.writeFile(path, fn);
});
};
नेवला स्कीमा नीचे परिभाषित किया गया है है। मोंगोज़ स्कीमा में फ़ाइल का नाम और फ़ाइल स्वयं है।
var fs = require('fs');
var mongoose = require('mongoose');
var db = mongoose.connection;
var gridfs = require('./gridfs');
var Schema = mongoose.Schema;
var trackDocsSchema = mongoose.Schema(
{
_id : Schema.Types.ObjectId,
docName: 'string',
files: [ mongoose.Schema.Mixed ]
}
);
trackDocsSchema.methods.addFile = function(file, options, fn) {
var trackDocs;
trackDocs = this;
return gridfs.putFile(file.path, file.name, options, function(err, result) {
if (err) console.log("postDocsModel TrackDocs Error: " + err);
trackDocs.files.push(result);
return trackDocs.save(fn);
});
};
var TrackDocs = mongoose.model("TrackDocs", trackDocsSchema);
जो सर्वर कोड लागू किया गया है वह नीचे है। RangeError:: अधिकतम कॉल स्टैक आकार से अधिक और कुछ भी नहीं GridFS में जोड़ा जाता है
exports.uploadFile = function (req, res) {
console.log("uploadFile invoked");
var trackDocs, opts;
trackDocs = new TrackDocs();
trackDocs._id = mongoose.Types.ObjectId(req.body._id);
trackDocs.docName = req.body.docName;
opts = {
content_type: req.files.file.type
};
return trackDocs.addFile(req.files.file, opts, function (err, result) {
if (err) console.log("api TrackDocs Error: " + err);
console.log("Result: " + result);
trackDocs.save();
console.log("Inserted Doc Id: " + trackDocs._id);
return res.json(true);
});
};
});
जब मैं folowing कोड चलाने के लिए, मैं एक त्रुटि
एपीआई TrackDocs त्रुटि मिलता है। हालांकि, अगर मैं एक ही फाइल को फिर से अपलोड करता हूं, तो यह इसे ग्रिडएफएस में सहेजता है।
नोटिस दो trackDocs.saves हैं। मुझे यकीन नहीं है कि क्या यह समस्या या कुछ और कारण पैदा कर रहा है।
मैं नोडजेएस और मोंगोस के लिए नया हूं इसलिए किसी भी आकलन की सराहना की जाएगी।
धन्यवाद, Melroy
क्या आप इसके साथ कहीं भी गए थे? – iandotkelly
कौन सी लाइन उस अपवाद को फेंक रही है? एक संभावित कामकाज (वास्तविक समाधान नहीं) स्टैक आकार को बढ़ाने के लिए है। स्क्रिप्ट 'node --stack-size = 32000 app.js ' –
का उपयोग करते समय आप यह कर सकते हैं आप अपनी फ़ाइल अपलोड कैसे प्रबंधित कर रहे हैं? भयानक या कुछ अन्य lib के साथ? – lukaszfiszer