2017-08-11 82 views
1

我决定走S3路线来存储图像,而不是用Gridfs来做。但我仍然对MongoDB如何与Multer和S3集成感到困惑。如何将Multer和Multer-S3与MongoDB集成?

例如,可以说我拥有每个用户的文档集合。假定文档本身不包含将被上传到我的S3云的配置文件图片。

但是,当我在前端显示用户列表时,如何确保为每个用户显示正确的配置文件图片?

我正在查看multer-s3文档,并且我注意到元数据设置了要上传到S3的文件的名称(我认为?)。

var upload = multer({ 
    storage: multerS3({ 
    s3: s3, 
    bucket: 'some-bucket', 
    metadata: function (req, file, cb) { 
     cb(null, {fieldName: file.fieldname}); 
    }, 
    key: function (req, file, cb) { 
     cb(null, Date.now().toString()) 
    } 
    }) 
}) 

我在想也许这个问题的一个很好的解决方案是将每个文件上传为与将使用它的用户相同的名称。我可以修改元数据和关键功能,以便它们与上传它们的用户名称相同吗? cb究竟做了什么,它的每个参数代表什么?

回答

0

假设您有用户名,您可以通过更改密钥来命名文件。

key: function (req, file, cb) { 
     cb(null, username + ".jpg") 
} 

或者你可以把照片文件这样的文件,文件夹内:

key: function (req, file, cb) { 
     cb(null, username + "/profile.jpg") 
} 

的/纳入将允许您创建,并把图像文件夹中。