fix: projection不需要每次都查询分片信息,导致过多的数据量

This commit is contained in:
Pan Qiancheng 2025-12-26 22:01:07 +08:00
parent a52a2874c6
commit 066d834d8d
14 changed files with 56 additions and 20 deletions

View File

@ -61,7 +61,9 @@ export async function mergeChunkedUpload(params, context) {
...extraFileProjection,
application: {
...applicationProjection,
}
},
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id: extraFileId,

View File

@ -42,7 +42,11 @@ export class ExtraFile extends Feature {
let modiEntityId = '';
const getExtraFileData = () => {
const [extraFile] = this.cache.get('extraFile', {
data: extraFileProjection,
data: {
...extraFileProjection,
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id,
},
@ -181,7 +185,11 @@ export class ExtraFile extends Feature {
id: await generateNewIdAsync(),
});
const [newExtraFile] = this.cache.get('extraFile', {
data: extraFileProjection,
data: {
...extraFileProjection,
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id: extraFileId,
},

View File

@ -263,6 +263,6 @@ export const extraFileProjection = {
uploadState: 1,
uploadMeta: 1,
applicationId: 1,
enableChunkedUpload: 1,
chunkInfo: 1,
// enableChunkedUpload: 1, // 只查询基本信息计算文件访问URL必备的信息这里的分片信息需要的时候单独查询因为很大
// chunkInfo: 1,
};

View File

@ -100,7 +100,7 @@ export default class S3Backend extends S3 {
const { instance, config: s3Config } = this.getConfigAndInstance(application, extraFile.bucket);
const preInit = await instance.prepareMultipartUpload(extraFile.bucket, key, extraFile.chunkInfo?.partCount, {
endpoint: s3Config.endpoint,
expiresIn: 30 * 1000, // 30 minutes
expiresIn: 30 * 1000, // 30 seconds
});
return {
uploadId: preInit.uploadId,

View File

@ -104,7 +104,9 @@ const watchers = [
...extraFileProjection,
application: {
...applicationProjection,
}
},
enableChunkedUpload: 1,
chunkInfo: 1,
},
fn: async (context, data) => {
const eg = groupBy(data, 'applicationId');

View File

@ -67,7 +67,9 @@ async function mergeChunkedUpload(params, context) {
...Projection_1.extraFileProjection,
application: {
...Projection_1.applicationProjection,
}
},
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id: extraFileId,

View File

@ -45,7 +45,11 @@ class ExtraFile extends Feature_1.Feature {
let modiEntityId = '';
const getExtraFileData = () => {
const [extraFile] = this.cache.get('extraFile', {
data: Projection_1.extraFileProjection,
data: {
...Projection_1.extraFileProjection,
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id,
},
@ -184,7 +188,11 @@ class ExtraFile extends Feature_1.Feature {
id: await (0, uuid_1.generateNewIdAsync)(),
});
const [newExtraFile] = this.cache.get('extraFile', {
data: Projection_1.extraFileProjection,
data: {
...Projection_1.extraFileProjection,
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id: extraFileId,
},

View File

@ -266,6 +266,6 @@ exports.extraFileProjection = {
uploadState: 1,
uploadMeta: 1,
applicationId: 1,
enableChunkedUpload: 1,
chunkInfo: 1,
// enableChunkedUpload: 1, // 只查询基本信息计算文件访问URL必备的信息这里的分片信息需要的时候单独查询因为很大
// chunkInfo: 1,
};

View File

@ -103,7 +103,7 @@ class S3Backend extends s3_1.default {
const { instance, config: s3Config } = this.getConfigAndInstance(application, extraFile.bucket);
const preInit = await instance.prepareMultipartUpload(extraFile.bucket, key, extraFile.chunkInfo?.partCount, {
endpoint: s3Config.endpoint,
expiresIn: 30 * 1000, // 30 minutes
expiresIn: 30 * 1000, // 30 seconds
});
return {
uploadId: preInit.uploadId,

View File

@ -106,7 +106,9 @@ const watchers = [
...Projection_1.extraFileProjection,
application: {
...Projection_1.applicationProjection,
}
},
enableChunkedUpload: 1,
chunkInfo: 1,
},
fn: async (context, data) => {
const eg = (0, lodash_1.groupBy)(data, 'applicationId');

View File

@ -99,7 +99,9 @@ export async function mergeChunkedUpload<ED extends EntityDict>(
...extraFileProjection,
application: {
...applicationProjection,
}
},
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id: extraFileId,

View File

@ -71,7 +71,11 @@ export class ExtraFile<ED extends EntityDict> extends Feature {
let modiEntityId = '';
const getExtraFileData = () => {
const [extraFile] = this.cache.get('extraFile', {
data: extraFileProjection,
data: {
...extraFileProjection,
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id,
},
@ -244,7 +248,11 @@ export class ExtraFile<ED extends EntityDict> extends Feature {
} as ED['extraFile']['Operation']);
const [newExtraFile] = this.cache.get('extraFile', {
data: extraFileProjection,
data: {
...extraFileProjection,
enableChunkedUpload: 1,
chunkInfo: 1,
},
filter: {
id: extraFileId,
},

View File

@ -269,6 +269,6 @@ export const extraFileProjection: EntityDict['extraFile']['Projection'] = {
uploadState: 1,
uploadMeta: 1,
applicationId: 1,
enableChunkedUpload: 1,
chunkInfo: 1,
// enableChunkedUpload: 1, // 只查询基本信息计算文件访问URL必备的信息这里的分片信息需要的时候单独查询因为很大
// chunkInfo: 1,
};

View File

@ -121,7 +121,9 @@ const watchers: Watcher<
...extraFileProjection,
application: {
...applicationProjection,
}
},
enableChunkedUpload: 1,
chunkInfo: 1,
},
fn: async (context, data) => {
const eg = groupBy(data, 'applicationId');