Как отобразить файл PDF, загруженный через форму html в MongoDB / NodeJS - PullRequest
0 голосов
/ 23 января 2020

Я работаю над приложением, в котором пользователь вводит данные через форму. Пользователь также может добавить вложение (pdf-файл) с формой

Что я сделал, так это сохранил пользовательские данные в коллекции 'request' и вложение в формате PDF в коллекции «загрузки». Проблема заключается в том, что при отображении сведений о форме, отправленных пользователем, я не могу отобразить файл, загруженный во время этой конкретной формы, и отобразить его пользователю. (Я имею в виду, что пользователь может отправить несколько запросов и загрузить файл. Каждый запрос имеет уникальное вложение). Как я могу этого добиться? Это то, чего я достиг до сих пор

Схема

const requestSchema = {
  from: String,//
  rollno: String,
  date: Date,
  purpose: String,
  to: [String],
  email: String,
  description: String,
  duration: String,
  source:{ data:Buffer,contentType:String},
  current_status: [String],
};

Приложение. js

.post(upload.single('file'),
    function(req, res) {
      const newRequest = new Request({
        purpose: req.body.purpose,
        from: req.body.from,
        rollno: req.body.rollno,
        date: req.body.date,
        to: req.body.part,
        email: req.body.email,
        description: req.body.description,
        duration: req.body.duration,
        source:req.file,
        current_status: req.body.status
      });

Маршрут панели управления

app.get("/dashboard", function(req, res) {
  gfs.files.find().toArray((err, files) => {
    // Check if files
    if (!files || files.length === 0) {
      request("http://localhost:3000/requests/B190257EP", function(error, response, body) {
        var data = JSON.parse(body);
        console.log(data);
        res.render("dashboard", {
          username: req.user.displayName,
          posts: data,
          files:false
        });
      });
      // res.render('uploads', { files: false });
    } else {
      files.map(file => {
        if (
          file.contentType === 'image/jpeg' ||
          file.contentType === 'image/png'
        ) {
          file.isImage = true;
        } else {
          file.isImage = false;
        }
      });
      request("http://localhost:3000/requests/B199999LS", function(error, response, body) {
        var data = JSON.parse(body);
        console.log(data);
        res.render("dashboard", {
          username: req.user.displayName,
          posts: data,
          files:files
        });
      });
    }
  }); 

Здесь загруженный файл повторяется в каждом запросе. Должно быть так, как первый файл соответствует первому запросу, второй файл для второго Preview of the app

MongoDB collection format for uploaded file

MongoDB request collection

Я думаю, что если я смогу сохранить objectID вместе с запросом, я смогу добиться этого, но как это будет сделано? Спасибо

...