每个用户只有一个图像使用meteor CollectionCFS

时间:2015-01-05 16:48:28

标签: meteor image-uploading

我使用Meteor和CollectionFS来允许用户存储图像。我希望每个用户只能存储一个图像,如果他上传第二个图像,则应覆盖第一个图像。

在客户端,我使用帮助函数上传文件:

"change #imageInput": FS.EventHandlers.insertFiles(Images, {
    metadata: function (fileObj) {
        return {
            owner: Meteor.userId()
        };
    },
    after: function (error, fileObj) {
    }
});

服务器端:

Images = new FS.Collection("images", {
    stores: [
        new FS.Store.FileSystem("thumbs", {
            transformWrite: function(fileObj, readStream, writeStream) {
                // Transform the image into a 10x10px thumbnail
                gm(readStream, fileObj.name()).resize('125', '125').stream().pipe(writeStream);
            }
        })
    ],
});

Images.allow({
    insert: function (userId, file) {
        return userId && file.owner === userId;
    },
    update: function (userId, file, fields, modifier) {
        return userId && file.owner === userId;
    },
    remove: function (userId, file) {
        return userId && file.owner === userId;
    },
    download: function(userId, file) {
        return true;
    }
})

当上传新图像时,应删除{owner:Meteor.userId()}的所有图像。我的问题是这个地方放在哪里?我还没有找到在服务器端插入像afterWrite这样的钩子的方法。

1 个答案:

答案 0 :(得分:0)

似乎update就像你需要的那样。 这应该可以帮到你:

Update image using collectionfs