我正在尝试使用deno运行一个API,它应该显示来自给定目录的文件中的一些PDF-元数据。这很好,直到PDF-ID。PDF-ID应该是文件名的最后两位数。jk03.pdf,fh04.pdf,.)如果我运行API,所有元数据都会显示为对象内部的数组,除非创建自己数组的ID。有人知道我如何在不创建自己的数组的情况下实现ID。
这就是我到现在为止得到的:
import { PDFDocument } from 'https://cdn.skypack.dev/pdf-lib@^1.11.1?dts';
import { opine, json } from "https://deno.land/x/opine@1.3.4/mod.ts";
const app = opine();
const port = 3000;
app.use(json());
let metaData = new Array();
let pdfData = new Object();
app.get("/pdf", async(req, res) => {
const basePath = './Documents/';
for (const dirEntry of Deno.readDirSync("./Documents")) {
async function readDocumentMetadata() {
const filePath = basePath + dirEntry.name
const existingPdfBytes = await Deno.readFile(filePath);
const pdfDoc = await PDFDocument.load(existingPdfBytes, {
updateMetadata: false
});
var pdfId = dirEntry.name.match(/[0-9]+/g)[0];
const file = Deno.openSync(filePath, { read: true });
const fileInfo = Deno.fstatSync(file.rid);
pdfData = {
ID : pdfId[0],
Name : dirEntry.name,
Size : fileInfo.size + " Bytes",
Pages : pdfDoc.getPageCount(),
CreationDate : pdfDoc.getCreationDate(),
ModificationDate : pdfDoc.getModificationDate()
};
metaData.push(pdfData);
};
await readDocumentMetadata();
};
res.json(metaData);
});
console.log("Server running on port", (port));
app.listen(port);这是我得到的错误信息:{“资源”:"/c:/Users/JK/deno/deno-vs-node/GetAllPdf.ts","owner":"deno","code":"2531","endLineNumber":8," message ":"Object可能‘null’“,"source":”deno“,"startLineNumber":25,"startColumn":21,”endLineNumber“:25,"endColumn":50 }
发布于 2021-05-20 07:37:53
我在行的末尾添加了.toString(),它现在工作得很好;
const pdfId = dirEntry.name.match(/0-9+/)?.toString();
https://stackoverflow.com/questions/67557303
复制相似问题