Tag:

Gridfs节点本地写入性能

我正在构build一个webapp,使用mongo的gridfs来存储大文件(200Mb〜500MB)。 文件将通过块上传,以防止浏览器崩溃。 我已经build立了一个简单的演示,正是我想要的。 但在我看来,写作操作越来越慢。 在上传期间,当我查看CPU使用率时,它达到了100%。 有什么我需要注意的吗? 像append不应该使用得太重。 是否有某种研究公开可用于网格写入性能?

为什么我不能使用来自相关mongo文档的id在GridFS上设置id

我的应用程序使用节点0.10.1,表示3.1.1,mongoose3.6.4,mongo 2.4.1和gridfs-stream 0.4.0。 我已经build立mongoose和网格stream与共享连接如下: /************* app.js ***************/ //Added this in edit to show setup of mongoose and gridfs-stream var mongoose = require("mongoose"); var Grid = require('gridfs-stream'); Grid.mongo = mongoose.mongo; global.conn = mongoose.createConnection(dbUri); conn.once('open', function(){ global.gfs = Grid(conn.db); }); 我正在尝试使用gridfs-stream来上传/下载文件。 我的上传看起来像: exports.uploadFile = function(req, res){ var file = req.files.upload; var docId = mongoose.Types.ObjectId(req.query.docId); var filename = […]

如何在一个请求中保存gridFS中的多个文件?

我正在使用nodejs和mongodb,并希望一次存储多个文件。 我正在使用GridFS的文件。 我的代码工作正常单个file upload。 var writestream = gfs.createWriteStream({filename:filename,metadata:project._id}); 的console.log(tmpFilepath); var filename = req.files.file.name; var tmpFilepath="./upload/"+ guid(); fs.rename(req.files.file.path,tmpFilepath); fs.createReadStream(tmpFilepath) .on('end', function() { console.log("file Saved"); }) .on('error', function() { console.log("error encountered"); // res.send('ERR'); }) // and pipe it to gfs .pipe(writestream); writestream.on('close', function (file) { fs.unlink(tmpFilepath); }); 我怎样才能使它上传多个文件?

Node.js错误:请求在file upload中强行中止

我使用强大的模块https://github.com/felixge/node-formidable上传图片。 我创build了一个单独的新项目和file upload完美的作品。 但是,当我把它整合到我现有的项目中。 我得到以下错误: – Error: Request aborted at IncomingMessage.onReqAborted (D:\ProjectName\node_modules\express\node_modules\connect\node_modules\multiparty\index.js:131:17) at IncomingMessage.EventEmitter.emit (events.js:92:17) at abortIncoming (http.js:1911:11) at Socket.serverSocketCloseListener (http.js:1923:5) at Socket.EventEmitter.emit (events.js:117:20) at TCP.close (net.js:466:12) 任何想法如何解决这个问题? 我试过的事件: – form.on('progress', function (bytesReceived, bytesExpected) { console.log('PROGRESS'); console.log(bytesReceived); console.log(bytesExpected); }); 它给了我以上代码的结果: PROGRESS 0 488 它不会超前于此。

MongoDB的filemd5是否有能力设置readPreference

我有一个使用GridFS构build的Node / Meteor中的文件存储服务,它被复制到多个容器中。 我目前试图find的是,如果这段代码实际上意识到读/写一致性 db.command({ filemd5: someFileId, root: 'fs' }, function callback(err, results) { … }) 我正在上传文件块,并将所有块合并成一个单一的文件,该命令执行。 我有一种感觉,它是使用次要成员(我有几个md5值是空文件 – d41d8cd98f00b204e9800998ecf8427e )。 是否有任何文档或附加设置? 这两个参数是文档中描述的唯一选项.. https://docs.mongodb.com/manual/reference/command/filemd5/ UPDATE 合并块的确切代码在第三方包中: cursor = files.find( { 'metadata._Resumable.resumableIdentifier': file.metadata._Resumable.resumableIdentifier length: $ne: 0 }, { fields: length: 1 metadata: 1 sort: 'metadata._Resumable.resumableChunkNumber': 1 } ) https://github.com/vsivsi/meteor-file-collection/blob/master/src/resumable_server.coffee#L26 然后有111-119行首先执行filemd5,然后在文件上运行更新 @db.command md5Command, (err, results) -> if […]

node.js:async.each速度太慢,需要大量元素asynchronous处理

我有一个4GB的RAM系统。 我需要按以下方式处理一组200个文件(平均文件大小= 20MB): 从gridfs读取每个文件 从文件中提取一些信息 将信息存储到mongoDB中的某个集合中 现在的代码,做同样的事情是: async.each(files, function (file, callback){ console.log("reading file", file._id); readstream[file._id] = db.gfs().createReadStream({ _id: file._id }); readstream[file._id].on('data', function (chunk) { part[file._id] = part[file._id] && (part[file._id] + chunk.toString()) || chunk.toString(); }); readstream[file._id].on('end', function(){ // do something here }); }, function (err){ if(err){ console.error("error ", err); res.json(err); } else{ console.log("saved all files ############ […]

如何在Meteor中执行服务器端文件处理操作?

我在服务器上使用GridFS存储Word(.docx)文件。 我希望能够通过使用docx-builder NPM软件包将文档合并到一个Word文件中。 以下是我如何上传文件: Meteor.methods({ uploadFiles: function (files) { check(files, [Object]); if (files.length < 1) throw new Meteor.Error("invalid-files", "No files were uploaded"); var documentPaths = []; _.each(files, function (file) { ActivityFiles.insert(file, function (error, fileObj) { if (error) { console.log("Could not upload file"); } else { documentPaths.push("/cfs/files/activities/" + fileObj._id); } }); }); return documentPaths; } }) […]

如何链接写入stream,立即与读取stream在Node.js 0.10?

以下行将从指定的urlvariables下载一个图像文件: var filename = path.join(__dirname, url.replace(/^.*[\\\/]/, '')); request(url).pipe(fs.createWriteStream(filename)); 这些行将会把这个图像保存到MongoDB GridFS中: var gfs = Grid(mongoose.connection.db, mongoose.mongo); var writestream = gfs.createWriteStream({ filename: filename }); fs.createReadStream(filename).pipe(writestream); 像这样链接pipe抛出错误:500不能pipe。 不可pipe道。 request(url).pipe(fs.createWriteStream(filename)).pipe(writestream); 发生这种情况是因为图像文件尚未准备好被读取,对吗? 我应该怎么做才能解决这个问题?错误:500不能pipe道。 不可pipe道。 使用以下内容: Node.js 0.10.10 , mongoose , request和gridfs-stream库。

如何使用GridFS来存储使用Node.js和Mongoose的图像

我是Node.js的新手 任何人都可以提供一个示例如何使用GridFS存储和检索二进制数据,如图像,使用Node.js和Mongoose? 我是否需要直接访问GridFS?