meteor中的collectionFS'transformWrite示例

时间:2015-08-21 11:00:36

标签: meteor

任何人都可以给我看一个transformWrite的具体工作示例。目前我已经有了这个例子,我不知道如何插入我的代码:https://github.com/CollectionFS/Meteor-CollectionFS#transformwrite--transformread

我的尝试代码如下。请告诉我如何使它工作。

  FS.Utility.eachFile(event, function(file) {
      file = transformWrite: function(fileObj, readStream, writeStream) {
          readStream.pipe(writeStream);
        }
      Images.insert(file, function (err, fileObj) {
        // Inserted new doc with ID fileObj._id, and kicked off the data upload using HTTP
      });
    });

1 个答案:

答案 0 :(得分:0)

您需要在商店中定义转换,而不是在插入期间。以下是我在step3d.com(一个简单的3D CAD文件查看器)上的操作方法:

transformServer = function(fileObj, readStream, writeStream) {
    if (fileObj.extension() == "stl") {
        readStream.pipe(writeStream);   // can handle as is
    } else if (fileObj.extension() == "step"
               || fileObj.extension() == "stp") {
        step2stl(fileObj, readStream, writeStream);  // convert from step to stl format
    } else {
        console.log("no idea how to handle", fileObj.extension());
        readStream.pipe(writeStream);
    }
};

var store = new FS.Store.GridFS("files", {
    transformWrite: function(fileObj, readStream, writeStream) {
        transformServer(fileObj, readStream, writeStream);
    }
});

Files = new FS.Collection("files", {
    stores: [store]
});

之后,在将文件存储到数据库之前,将转换对Files集合的任何插入。