normalizr - 对normalize函数使用schema.js参数

时间:2018-04-09 23:25:37

标签: normalizr

我正在探索创建将数据或对象映射到模式的通用API的选项。我有两个问题。

问题1.我想要实现的是,我们应该能够传递任何平面结构的数据并将其映射到相应的模式/类,这是一个分层结构。我们可以在这个用例中使用normalizr吗?

我的来源如下:

//bare with me... i am not listing my source/destination as a proper json.

Source {
String employerId;
String employerName;
String employeeId;
String employeeName;
}

然后我有

SourceList{
  List of <Source>;
}

我的目的地:

public class Employers {

List<Employer> employer;
//getters and setters here
}

Employer {

String employerId;
String employerName;
List of <Employee>;
}

Employee {

String employeeId;
String employeeName;
}

我想将Map SourceList映射到雇主映射。我想调用normalize函数,它应该为我做的工作。我可以使用normalizr实现这一目标。

问题2.我们浏览了有关函数规范化(数据,模式)的文档。 在示例中,我们看到schama是schema.js文件。我们在这个schema.js文件中有什么?它是一个javascript,具有目标映射的源的实际定义?或者它是我们将数据映射到的结构?我可以将JSON Schema作为&#39;架构的值传递。 normalize函数中的参数?

1 个答案:

答案 0 :(得分:0)

@PaulArmstrong,这是我试过的。对于初学者,我试图运行github示例文件夹中给出的示例。

  1. 我将normalizr下载到C:\ normalizr-master。我运行了命令

    $ npm install --save-dev babel-cli以及随后的

    $ npm install --save-dev babel-preset-es2015 babel-preset-stage-2。

  2. 来自C:\ normalizr-master的
  3. 我运行了纱线命令

  4. 然后我执行了以下命令:我收到如下错误。什么不对吗?

    C:\ normalizr-master \ node_modules.bin&gt; babel-node C:\ normalizr- 主\例子\关系\ index.js

    C:\ normalizr主\ node_modules \ babel- 核心\ LIB \转化\文件\选项\期权manager.js:328     扔掉;     ^

    错误:无法找到相对于目录“C:\ normalizr-”的预设“env” master“(处理预设时:”C:\ normalizr-master \ .babelrc.js“) (在处理预设时:“C:\ normalizr-master \ .babelrc.js”)(而 处理预设:“C:\ normalizr-master \ .babelrc.js”) 在C:\ normalizr-master \ node_modules \ babel-core \ lib \ transformation \ file \ optio ns \ option-manager.js:293:19在Array.map() 在OptionManager.resolvePresets(C:\ normalizr-master \ node_modules \ babel-core \ LIB \转化\文件\选项\期权manager.js:275:20) 在OptionManager.mergePresets(C:\ normalizr-master \ node_modules \ babel-core \ l IB \转化\文件\选项\期权manager.js:264:10) 在OptionManager.mergeOptions(C:\ normalizr-master \ node_modules \ babel-core \ l IB \转化\文件\选项\期权manager.js:249:14) 在C:\ normalizr-master \ node_modules \ babel-core \ lib \ transformation \ file \ optio NS \期权manager.js:265:14 在C:\ normalizr-master \ node_modules \ babel-core \ lib \ transformation \ file \ optio NS \选项-manager.js:323:22 在Array.map() 在OptionManager.resolvePresets(C:\ normalizr-master \ node_modules \ babel-core \ LIB \转化\文件\选项\期权manager.js:275:20) 在OptionManager.mergePresets(C:\ normalizr-master \ node_modules \ babel-core \ l IB \变换\文件\选项\选项-manager.js:264:10)