如何解决Multer GridFs 存储将 req.user 关联到元数据
我可以使用 multer-gridfs-storage 将文件上传到我的 MongoDB,但我无法将文件与用户关联,我想要的是能够将从passportjs 获取的req.user 传递到文件元数据
// Create mongo connection
const conn = mongoose.createConnection(mongoURI);
// Init gfs
let gfs;
conn.once('open',() => {
gfs = Grid(conn.db,mongoose.mongo);
gfs.collection('uploads');
});
// Create storage engine
const storage = new GridFsstorage({
url: mongoURI,file: (req,file) => {
crypto.randomBytes(16,(err,buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') +
path.extname(file.originalname);
const fileInfo = {
filename: filename,bucketName: 'uploads',Metadata: {
user : // I want to pass here req.user
}
};
resolve(fileInfo);
});
});
},});
const upload = multer({ storage });
解决方法
你应该像这样实现:
// Create mongo connection
const conn = mongoose.createConnection(mongoURI);
// Init gfs
let gfs;
conn.once('open',() => {
gfs = Grid(conn.db,mongoose.mongo);
gfs.collection('uploads');
});
// Create storage engine
const storage = new GridFsStorage({
url: mongoURI,file: (req,file) => {
crypto.randomBytes(16,(err,buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') +
path.extname(file.originalname);
const user = req.user;
const fileInfo = {
filename: filename,bucketName: 'uploads',metadata: user
};
resolve(fileInfo);
});
});
},});
const upload = multer({ storage });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。