使代码的执行等到文件的加密完成为止

时间:2019-05-27 12:33:53

标签: node.js mongodb encryption

我正在尝试对用户上传的pdf文档进行加密,然后再将其存储到数据库中,但是保存文件的代码会在加密完成之前运行。

我正在尝试使用file-encryptor软件包加密nodejs中的文件,然后将其ID保存到我的mongodb数据库中。以同样的方式,我想在用户搜索它之后将其解密,然后以解密形式返回给用户。我试图在此之前等待,但是,我知道这将不起作用,因为文件加密器不会返回承诺。

const pdfUpload = req.files.pdf;

 let pdfNonEnc = pdfUpload[0].path;

      const encPdf = await encryptor.encryptFile(
        pdfNonEnc,
        `${pdfNonEnc}.dat`,
        key,
        function(err) {
          fs.unlink(pdfNonEnc, err => {
            if (err) {
              throw err;
            }
            console.log("encComplete");
          });
        }
      );
      console.log("save started");
      datasheet = new DataSheet({
        description,
        partnumber,
        make,
        partimage,
        pdf: encPdf,
        user: authUser
      });
      await datasheet.save();
      console.group("save complete");
      return res.status(201).json(datasheet);

在控制台中,如提供的代码中所示,在“ encComplete”之前记录“ save staretd”,而mongo给出了pdf字段为必填的错误,因为我已将其设置为required,而我则需要这种方式。有没有人有我可以用来完成此工作的逻辑?

0 个答案:

没有答案