ben kod aşağıdakidepolanması mongodb kullanarak gridfs dosyalar ve
gridfs.js mongoose firavunfaresi şema aşağıda tanımlanmıştır
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);
});
};
dosya bayt yazar aşağıdaki kodu vardır. Mongoose şemasının bir dosya adı ve dosyanın kendisi vardır.
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);
Çağrılan sunucu kodu aşağıda. RangeError: Maksimum çağrı yığını aşıldı boyut ve hiçbir şey GridFS eklenir ben folowing kodu çalıştırdığınızda
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);
});
};
});
, bir hatayı
api TrackDocs Hata olsun. Ancak, aynı dosyayı tekrar yüklerseniz, bunu GridFS'ye kaydeder.
İki trackDocs.saves olduğuna dikkat edin. Soruna veya başka bir şeye neden olup olmadığından emin değilim.
NodeJS ve Mongoose'da yeniyim, bu sayede herhangi bir destek çok takdir edilecek.
sayesinde Melroy
Bunun ile herhangi bir yer buldunuz mu? – iandotkelly
Bu istisna hangi satırı veriyor? Bir potansiyel geçici çözüm (gerçek çözüm değil) yığın boyutunu artırmaktır. Betiği çağırırken bunu yapabilirsiniz 'node --stack-size = 32000 app.js ' –
Dosya yükleme işlemlerini nasıl yapıyorsunuz? Zorlu veya başka bir lib ile? – lukaszfiszer