fix(fn): cached context

Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
Innei
2023-02-14 22:26:25 +08:00
parent 213893a4f1
commit 145355fd4f
2 changed files with 25 additions and 20 deletions

View File

@@ -102,8 +102,6 @@ import * as ejs from 'ejs'
`context.model` 当前 Snippet 的 Model
`context.document` MongooseDocument<SnippetModel>,可以进行对该记录的数据库操作。(不建议)
`context.getMaster()` Promise<UserModel>,可以获取到主人的信息
`context.getService(name: string)` Promise<unknown>,当前支持 `axios`, `config`

View File

@@ -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),