gpt4 book ai didi

node.js - 在请求对象命中 Controller 之前将请求对象参数键映射到自定义键

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:28 25 4
gpt4 key购买 nike

我有一个 Loopback 4 应用程序,请求对象的属性键是 snake_case,它们映射到我们的数据库列名称 StudlyCase。假设我希望应用程序属性名称为 camelCase。因此数据的 key 将经历以下生命周期:

Request Parameter (snake_case)
||
\/
Model Property (camelCase)
||
\/
MySQL Column (StudlyCase)

Loopback 4 负责模型属性和 MySQL 列之间的映射。它具有装饰器,允许我指定与模型属性关联的数据库列名称,同时使用与请求对象相同的属性键,例如:

@property({
mysql: {
columnName: 'FirstName',
},
type: 'string',
required: true,
})
first_name: string;

我正在寻找一个 Express 包或其他简单的方法来在请求对象到达 Controller 之前应用自定义键映射,而不是像 Loopback 的装饰器允许的那样在数据模型层应用。

Laravel 正是我正在寻找的东西。他们称之为 Eloquent API Resource 层。它只是一个映射数组,例如:

[
'first_name' => 'firstName',
'last_name' => 'lastName',
... more mappings ...
]

但关键是这个映射发生在 Controller 接收到请求对象之前

这如何在 Loopback 4/Express/NodeJS 中完成?

更新:看起来 Loopback 4 在其 @loopback/rest 包的序列 API 中包装了 Express。一旦我完全弄清楚这个问题以及答案,我会发布另一个更新。

我忘记提及的是,Response 对象的属性键也需要与 Request 对象的属性键大小写相同(在我的例子中是 snake_case)。我将发布一个 TypeScript/LB4 解决方案。

最佳答案

如果您正在寻找将参数键转换为驼峰式 - 试试 ccqp表达中间件。

关于node.js - 在请求对象命中 Controller 之前将请求对象参数键映射到自定义键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com