我目前正在开发一个与 SAP(以及其他一些外部应用程序)通信的 NestJS 应用程序,不幸的是,SAP 需要一些非常特定命名的字段。准确地说,在某些情况下,我需要向它发送超过 70 个字段,而在其他情况下,一个请求可能会返回超过 280 个字段。
由于我无法修改 SAP,我被迫使用与我的应用程序命名模式(驼峰式和可读)相悖的字段,因为 SAP 使用 SCREAMING_SNAKE_CASE 以及缩写、数字,甚至一些混合英语和英语的单词。德语单词。
现在,我知道有一些不太实用的方法(例如单独解析每个字段),但是有没有什么可以节省我的时间或至少使一切变得更干净而无需手动解析字段?
编辑:以下是 SAP 返回给我的应用程序的示例
PLNT_FABRIZIEREN_C: '253D',
MRKD_PRODUCTS: ['PRODUCT1', 'PRODUCT2'],
NEUES_PRDKT: TRUE
以及我的应用程序中的等效内容:
factoryPlantCode: '253D',
markedProducts: ['PRODUCT1', 'PRODUCT2'],
isNewProduct: true
将字段名称保存到应用程序时,我需要完全更改字段名称,因此我仍然使用驼峰命名法,但仍使用 SAP 知道的名称将其发回。
最佳答案
你可以尝试这样的事情。您所需要做的就是在 key 中添加来自 SAP 的 key ,并将 value 设置为您要在应用程序中使用的 key 。
const mappings = {
PLNT_FABRIZIEREN_C: "factoryPlantCode",
MRKD_PRODUCTS: "markedProducts",
NEUES_PRDKT: "isNewProduct"
}
const getFormattedVersion = (data) => {
const returnData = {};
Object.keys(data).forEach(key => {
returnData[mappings[key]] = data[key];
})
return returnData
}
const getSAPSupportedVersion = (data) =>{
const returnData = {};
Object.keys(data).forEach(key => {
const mappingKeys = Object.keys(mappings)
const mappingValues = Object.values(mappings)
const mappedKey = mappingKeys[mappingValues.indexOf(key)];
returnData[mappedKey] = data[key];
})
return returnData
}
console.log(
getFormattedVersion({
PLNT_FABRIZIEREN_C: '253D',
MRKD_PRODUCTS: ['PRODUCT1', 'PRODUCT2'],
NEUES_PRDKT: true
})
)
console.log(
getSAPSupportedVersion({
factoryPlantCode: "253D",
isNewProduct: true,
markedProducts: ["PRODUCT1", "PRODUCT2"]
})
)
关于javascript - NestJS 有没有办法映射不同名称的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70664965/