diff options
author | 蔡仲明 (Romulus Urakagi Tsai) <urakagi@gmail.com> | 2019-11-21 11:25:56 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-21 11:25:56 +0800 |
commit | 3e0bedd8c7a6dec97352212adb1cbde1ade44190 (patch) | |
tree | 651ff30d25ddb0416444370368d699e597c142d7 /models/export.js | |
parent | 9bbeb73db1cd0ce1caaaca8dfb14ea92131bbf9d (diff) | |
parent | 4f5de87cc4c2281bd576548693de7c94e6a988c6 (diff) | |
download | wekan-3e0bedd8c7a6dec97352212adb1cbde1ade44190.tar.gz wekan-3e0bedd8c7a6dec97352212adb1cbde1ade44190.tar.bz2 wekan-3e0bedd8c7a6dec97352212adb1cbde1ade44190.zip |
Merge pull request #1 from wekan/master
Update master
Diffstat (limited to 'models/export.js')
-rw-r--r-- | models/export.js | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/models/export.js b/models/export.js index a69be970..cc979ce0 100644 --- a/models/export.js +++ b/models/export.js @@ -50,12 +50,18 @@ if (Meteor.isServer) { }); } +// exporter maybe is broken since Gridfs introduced, add fs and path + export class Exporter { constructor(boardId) { this._boardId = boardId; } build() { + const fs = Npm.require('fs'); + const os = Npm.require('os'); + const path = Npm.require('path'); + const byBoard = { boardId: this._boardId }; const byBoardNoLinked = { boardId: this._boardId, @@ -106,7 +112,7 @@ export class Exporter { ); result.subtaskItems.push( ...Cards.find({ - parentid: card._id, + parentId: card._id, }).fetch(), ); }); @@ -134,6 +140,11 @@ export class Exporter { const getBase64Data = function(doc, callback) { let buffer = new Buffer(0); // callback has the form function (err, res) {} + const tmpFile = path.join( + os.tmpdir(), + `tmpexport${process.pid}${Math.random()}`, + ); + const tmpWriteable = fs.createWriteStream(tmpFile); const readStream = doc.createReadStream(); readStream.on('data', function(chunk) { buffer = Buffer.concat([buffer, chunk]); @@ -143,8 +154,12 @@ export class Exporter { }); readStream.on('end', function() { // done + fs.unlink(tmpFile, () => { + //ignored + }); callback(null, buffer.toString('base64')); }); + readStream.pipe(tmpWriteable); }; const getBase64DataSync = Meteor.wrapAsync(getBase64Data); result.attachments = Attachments.find(byBoard) |