【问题标题】:Multer GridFs Storage Associate req.user to metadataMulter GridFs 存储关联 req.user 到元数据
【发布时间】:2021-06-08 04:31:51
【问题描述】:

我可以使用 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 }); 

【问题讨论】:

    标签: node.js mongoose passport.js gridfs multer-gridfs-storage


    【解决方案1】:

    你应该这样实现:

    // 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 }); 
    

    【讨论】:

    • 我已经尝试过你的解决方案,但它给了我数据库 'metadata: null' ,当我在控制台中登录时,即使强硬的 req.user 也不为空
    • 你可以访问fileinfo中的req吗?创建一个 var 并将 req.user 分配给它。我已经更新了代码
    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2021-12-15
    • 1970-01-01
    • 2013-07-09
    相关资源
    最近更新 更多