openDownloadStream 基于 mongodb gridfs 中的元数据
openDownloadStream based on metadata in mongodb gridfs
我使用元数据创建了 GridFs 存储桶,页面字段如下。
const bucket = new GridFSBucket(mydb, {
"DocumentImageFile",
});
fs.createReadStream(file)
.pipe(
bucket.openUploadStream(documentId.toString(), {
metadata: {
page: 1,
},
}),
)
.on('finish', () => {
fs.unlink(file, () => {});
});
现在我需要根据页码阅读。但是阅读部分似乎没有过滤器。我们如何才能只读取只有 page: 1 的块作为我在存储期间获取的元数据。
const bucket = new GridFSBucket(projectContext.db, {
bucketName: 'DocumentImageFile',
});
const strDocumentId: string = documentData.documentId.toString();
const downloadStream = bucket.openDownloadStream(
new ObjectID(strDocumentId),
);
不确定这是否直接可行。目前我首先使用元数据查询文档 ID,然后使用该 ID 获取。所以使用两步过程我能够解决它。
const documentImage = await documentImageFileModel.findOne({
filename: documentData.documentId,
'metadata.page': 1,
});
const documentId = documentImage.id;
const bucket = new GridFSBucket(projectContext.db, {
bucketName: 'DocumentImageFile',
});
const downloadStream = bucket.openDownloadStream(new ObjectID(documentId));
我使用元数据创建了 GridFs 存储桶,页面字段如下。
const bucket = new GridFSBucket(mydb, {
"DocumentImageFile",
});
fs.createReadStream(file)
.pipe(
bucket.openUploadStream(documentId.toString(), {
metadata: {
page: 1,
},
}),
)
.on('finish', () => {
fs.unlink(file, () => {});
});
现在我需要根据页码阅读。但是阅读部分似乎没有过滤器。我们如何才能只读取只有 page: 1 的块作为我在存储期间获取的元数据。
const bucket = new GridFSBucket(projectContext.db, {
bucketName: 'DocumentImageFile',
});
const strDocumentId: string = documentData.documentId.toString();
const downloadStream = bucket.openDownloadStream(
new ObjectID(strDocumentId),
);
不确定这是否直接可行。目前我首先使用元数据查询文档 ID,然后使用该 ID 获取。所以使用两步过程我能够解决它。
const documentImage = await documentImageFileModel.findOne({
filename: documentData.documentId,
'metadata.page': 1,
});
const documentId = documentImage.id;
const bucket = new GridFSBucket(projectContext.db, {
bucketName: 'DocumentImageFile',
});
const downloadStream = bucket.openDownloadStream(new ObjectID(documentId));