我正在尝试对用户上传的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,而我则需要这种方式。有没有人有我可以用来完成此工作的逻辑?