从数据源来的数据,json文件格式,或者是数组, 批量导入到graphcool数据库中。
使用了函数式编程中的ramda.js 和tranducers-js.js
的方法,
问题分解
- 遍历数组,采用map方法
- 映射单个对象属性到variable
- 单个对象的变量插入到数据库中
解决办法
这里使用函数式编程来处理问题,函数式并不是高深的技术,只是简化了处理问题的流程
常规的处理流程
transducer的处理流程
数据结构:
1 | { ratingStars: 4, |
这里有嵌套的结构,在graphql-request要使用扁平的结构,所以需要对数组对象中的的单个对象做映射处理,然后再插入数据库。使用transducer
原理,不在先处理映射,然后函子,接着再map方法,插入的数组。 对单个对象的处理可以通过tranducer方式放到一起一并处理。 这里的思想是很精妙的。
具体的操作方法
在express服务器上运行
请求函数柯理化
1 | //首先传入API,template,等待数据 |
扁平化对象数据
1 | var flattenData = function (n) { |
函数式方法的一些处理过程
1 | const waitForData = func(api, mu); //柯理化 |
整个代码
1 |
|