我想知道Riak.mapValuesJson()和JSON.parse()之间是否有任何区别。我不知道Riak.mapValuesJson()所以在我的地图中减少我的Riak数据库中的函数我继续使用JSON.parse()工作我不确定是否有额外的优化或内置的riak版本的东西如果Riak.mapValuesJson()是JSON.parse()的别名
答案 0 :(得分:1)
它使用JSON.parse()
请参阅:https://github.com/basho/riak_kv/blob/master/priv/mapred_builtins.js
mapValues: function(value, keyData, arg) {
if (value["not_found"]) {
return [value];
}
var data = value["values"][0]["data"];
if (Riak.getClassName(data) !== "Array") {
return [data];
}
else {
return data;
}},
mapValuesJson: function(value, keyData, arg) {
if (value["not_found"]) {
return [value];
}
var newValues = Riak.mapValues(value, keyData, arg);
return newValues.map(function(nv) { return JSON.parse(nv); });
}
编辑:
第一步是在if语句中确保对象有值,因为即使没有值,riak也会返回一个对象,允许你设置一个值。
下一步是调用父对象并使用回调来调用该方法来解析现在解码的json数据,如果是stements和initalizing对象,它们之间不应该有任何主要的速度差异,但它确实使地图的调用变得更容易,我会在较小的存储桶上使用它,并在较大的存储桶上使用JSON.pare()