0

我想知道 Riak.mapValuesJson() 和 JSON.parse() 之间是否有任何区别。我不知道 Riak.mapValuesJson() 所以在我的 Riak 数据库中的 map reduce 函数中,我一直使用 JSON.parse() 工作我不确定是否有额外的优化或内置 riak 版本中的东西如果 Riak.mapValuesJson() 是 JSON.parse() 的别名

4

1 回答 1

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 数据,它添加到 if 语句和初始化对象的两者之间不应该有任何主要的速度差异,但它确实使调用 map reduce 更容易,我会在较小的存储桶上使用它,而 JSON.pare() 在较大的存储桶上使用

于 2012-10-14T20:12:30.087 回答