diff --git a/src/modules/serverless/serverless.readme.md b/src/modules/serverless/serverless.readme.md index 7e49eb49..9afbdd51 100644 --- a/src/modules/serverless/serverless.readme.md +++ b/src/modules/serverless/serverless.readme.md @@ -102,8 +102,6 @@ import * as ejs from 'ejs' `context.model` 当前 Snippet 的 Model -`context.document` MongooseDocument,可以进行对该记录的数据库操作。(不建议) - `context.getMaster()` Promise,可以获取到主人的信息 `context.getService(name: string)` Promise,当前支持 `axios`, `config` diff --git a/src/modules/serverless/serverless.service.ts b/src/modules/serverless/serverless.service.ts index 412bc727..52f8b57f 100644 --- a/src/modules/serverless/serverless.service.ts +++ b/src/modules/serverless/serverless.service.ts @@ -529,11 +529,6 @@ export class ServerlessService implements OnModuleInit { model: SnippetModel, logger: Logger, ) { - if (this.cleanableScope.scopeContextLRU.has(scope)) { - return this.cleanableScope.scopeContextLRU.get(scope) - } - - const document = await this.model.findById(model.id) const secretObj = model.secret ? qs.parse(EncryptUtil.decrypt(model.secret)) : {} @@ -544,17 +539,35 @@ export class ServerlessService implements OnModuleInit { ) } + const requestContext = { + ...context, + ...context.res, + query: context.req.query, + headers: context.req.headers, + // TODO wildcard params + params: Object.assign({}, context.req.params), + + secret: secretObj, + + model, + document: model, + name: model.name, + reference: model.reference, + } + + if (this.cleanableScope.scopeContextLRU.has(scope)) { + const context = this.cleanableScope.scopeContextLRU.get(scope) + + return Object.assign({}, context, { + context: { ...context.context, ...requestContext }, + }) + } + // eslint-disable-next-line @typescript-eslint/no-this-alias const self = this const createdContext = { context: { - // inject app req, res - ...context, - ...context.res, - query: context.req.query, - headers: context.req.headers, - // TODO wildcard params - params: Object.assign({}, context.req.params), + ...requestContext, storage: { cache: this.mockStorageCache(), @@ -566,12 +579,6 @@ export class ServerlessService implements OnModuleInit { }, }, - secret: secretObj, - - model, - document, - name: model.name, - reference: model.reference, getMaster: this.mockGetMaster.bind(this), getService: this.getService.bind(this),