任何人都可以给我看一个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 }); });
答案 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
集合的任何插入。