javascript - 如何在导入时动态映射列名
问题描述
这是我的情况,我从多个数据源导入到我的 json 后端。
映射文件将类似于下面的示例。所以问题是我如何才能有效地查找从这个 json 文件导入的映射,并在将数据导入我的后端时使用它。所以概念是将 2 个对象传递给我的函数,映射文件和保存来自供应商的数据的 json 对象。然后我必须使用映射和循环数据来创建一个对象/文档并在我的后端插入正确的映射。
{
"vendor" : "ABCVendor",
"version" : "2.01",
"mappings" : [
{ "fieldName" : "fName",
"dbName" : "FirstName",
"required" : true,
"type" : "string"
},
{ "fieldName" : "mName",
"dbName" : "MiddleName",
"required" : false,
"type" : "string"
},
{ "fieldName" : "lName",
"dbName" : "LastName",
"required" : true,
"type" : "string"
}
]
}
这是输入的样子
{
"fname" : "Steve",
"mname" : "T",
"lname" : "Miller"
}
这里的广告是我想出去的
{
"FirstName" : "Steve",
"MiddleName" : "T",
"LastName" : "Miller"
}
解决方案
你可以做这样的事情,如果插入总是相同的。
不过,这可能不是最高效的方法。
"use strict";
const fileConfig = {
"vendor": "ABCVendor",
"version": "2.01",
"mappings": [
{
"fieldName": "fName",
"dbName": "FirstName",
"required": true,
"type": "string"
},
{
"fieldName": "mName",
"dbName": "MiddleName",
"required": false,
"type": "string"
},
{
"fieldName": "lName",
"dbName": "LastName",
"required": true,
"type": "string"
}
]
};
const funcInput = {
"fName": "Steve",
"mName": "T",
"lName": "Miller"
};
function change(config, input) {
const result = {};
config.mappings.forEach((fe) => {
result[fe.dbName] = input[fe.fieldName];
});
return result;
}
console.log(change(fileConfig, funcInput))
推荐阅读
- c# - Skype + C# - Invalid chat name
- c++ - 在 for 循环中仅显示系列的最后一个结果
- google-chrome - Chrome Extension, Not compatible with PC but compatible with Chromebook. How to change it?
- swift - 关闭视图控制器的最佳方法?
- ruby-on-rails - RAILS - 不能在 f.select 字段中使用类
- swift - Xcode firebase 简单写数据
- postgresql - 本地 Postgres 应用程序在端口 5432 上运行,但 Docker Compose 服务映射到该端口运行时没有错误?
- javascript - 大量模块随 console.log 一起提供,但它们不返回任何内容
- synchronization - 硬件fetch&add指令能否保证免等待执行?
- flutter - 为什么某些变量在颤振自定义类中标记为最终变量?