【发布时间】:2016-03-03 12:22:44
【问题描述】:
我有一个 Node.js 应用程序 APP-A,它使用 APP-B 的 API 与另一个 C# 应用程序 APP-B 通信。 APP-B 有一个返回 JSON 的 RESTful API。除了一些标准字段,例如名称、描述之外,APP-B 的键是在用户在系统中创建字段时定义的。生成的 JSON 如下所示:
{
"name": "An example name",
"description": "Description for the example",
"cust_fields": {
"cust_123": "Joe Bloggs",
"cust_124": "Essex"
}
}
我有两个 APP-B 实例,一个开发环境和一个生产环境,它们是分开安装的。结果prod环境的JSON如上,dev环境的JSON是这样的:
{
"name": "An example name",
"description": "Description for the example",
"cust_fields": {
"cust_782": "Joe Bloggs",
"cust_793": "Essex"
}
}
这在 APP-A(Node.js 应用程序)中通过这样的 JSON 映射来处理:
{
"name": "name",
"description": "description",
"cust_fields": {
"full_name": "cust_123",
"city": "cust_124"
}
}
加载如下:
var map;
switch(env) {
case 'dev':
map = require('../env/dev/map.json');
break;
case 'prod':
map = require('../env/prod/map.json');
break;
};
module.exports = {
name: map.name,
description: map.description,
cust_fields: {
full_name: map.cust_fields.full_name,
city: map.cust_fields.city,
}
}
所以我想知道,有没有更好的方法来处理这个问题?我看不到必须在 prod 和 dev 的键名之间创建某种手动关系的方法,因为没有办法找出哪个字段对应于什么,但这似乎需要做很多工作。
感谢阅读。
更新:
我创建了一个 jsFiddle 来更好地说明我的问题:http://jsfiddle.net/7k9k03o6。
【问题讨论】:
-
我同意,手动维护这不是一个长期的解决方案。所以每个用户都有一个特定于他们的自定义字段名称?而且您正在尝试将它们映射到服务器上的同一字段?如果它们真的不是唯一的,也许只是使用枚举来生成字段,这样他们就可以从列表中选择自定义字段?或者如果它们始终相同,只需为每个用户定义字段,如果他们不选择填充它们,某些字段将是空的?对您正在尝试做的事情进行更多解释会很好 - 也许它是一个比现在设置的更简单的用例。
-
我创建了一个 jsFiddle 来更好地说明我的问题:jsfiddle.net/7k9k03o6。我想重点是在两个环境中处理更改键。
-
为什么不同的环境使用不同的字段名?这似乎很让人头疼 - 你这样做的原因是什么?
-
更改字段名称的系统不是我能控制的。它是一个表单和工作流系统,允许用户构建自己的表单并添加自己的字段。当用户在他们的系统 APP-B 中添加一个新字段并希望它出现在 Node.js 系统 APP-A 中时,这就是用于执行此操作的方法。是的,这是一个巨大的头痛 - 因此我的问题。必须有更好的方法。
标签: javascript node.js