【发布时间】:2015-09-18 16:29:44
【问题描述】:
如何转换以下内容:
[{
"name": "annoying data",
"status": "evil",
"frustration": [
{
"name": "foo",
"value": 1
},
{
"name": "bar",
"value": 2
},
{
"name": "baz",
"value": 3
}
]
}...]
到这个输出:
[{
"name": "annoying data",
"status": "evil",
"foo": 1,
"bar": 2,
"baz": 3
}...]
来自重新思考查询?
我们有一个存储的第三方 API 响应,我正在尝试将其转换为有用的东西。在我看来,要实现健全数据输出的最终目标,我需要完成 2 件事。
- 将
frustration数组转换为对象,使用name作为键,value作为值。 - 将新转换的
frustration对象合并到父对象中。
我对第 2 步有一个可能的解决方案:
.map(function(row) {
row.pluck('name', 'status').merge(row('frustration'))
})
但我在第一步中毫无进展。任何想法都非常感谢!
当前完整查询(更改名称以保护...我!):
r.db('test').table('evil_things').map(function(row) {
var x = row('a')('tree')('children')
.nth(0)('children')
.nth(0)
.map(function(x) {
return x('children');
})
.concatMap(function(x) {
return x.pluck('name', 'value');
})
;
return {
'name': row('name'),
'status': row('status'),
'frustration': x
};
}).filter(function(row) {
return r.expr(['FOO','BAR','BAZ']).contains(row('name').upcase());
})
.orderBy('status');
【问题讨论】:
标签: javascript functional-programming rethinkdb nosql