Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回值作为map reduce上的键_Javascript_Mapreduce_Couchdb - Fatal编程技术网

Javascript 返回值作为map reduce上的键

Javascript 返回值作为map reduce上的键,javascript,mapreduce,couchdb,Javascript,Mapreduce,Couchdb,目前,我对couchdb的看法总是返回如下内容: { "key":"somekey", "value":"somevalue" } { "somekey":"somevalue" } 我想知道是否有办法返回这样的东西: { "key":"somekey", "value":"somevalue" } { "somekey":"somevalue" } 我需要直接访问“somekey”,而不必在整个数组中搜索带有“somekey”值的键 谢谢您可以使用下划线()完成

目前,我对couchdb的看法总是返回如下内容:

{
  "key":"somekey",
  "value":"somevalue"
}
{
  "somekey":"somevalue"
}
我想知道是否有办法返回这样的东西:

{
  "key":"somekey",
  "value":"somevalue"
}
{
  "somekey":"somevalue"
}
我需要直接访问“somekey”,而不必在整个数组中搜索带有“somekey”值的键


谢谢

您可以使用下划线()完成此操作


当使用视图时,CouchDB没有提供直接的方法来返回文档集合,正如您所看到的,除了key/value之外

您需要将客户端上的数据映射到键控索引中,或者直接从视图中通过键请求文档:

/sample/_design/docs/_view/by_somekey?key="somekey"
如果您正在寻找JavaScript中的快速映射选项(避免为每次迭代调用函数),您当然可以使用以下简单逻辑:

// docs are the documents returned from the view
var map={};
for(var i=0,len=docs.length;i<len;i++) {
  map[docs[i].key] = docs[i].value;
}
//文档是从视图返回的文档
var-map={};

对于(var i=0,len=docs.length;i如果您不喜欢沙发查询的格式或数据,您可以根据自己的意愿使用重新格式化。类似的内容应该适合您:

function(head, req){
  send('[');
  row = getRow();
  if (row){
    // here you make your own JS structure to be returned,
    // serialize it with toJSON() and send to client with send()

    // First row:
    var new_row = {};
    new_row[row.key] = row.value;
    send(toJSON(new_row));

    while(row = getRow()){
      // Next rows:
      send(',');
      var new_row = {};
      new_row[row.key] = row.value;
      send(toJSON(new_row));
    }
  }
  return ']';
}

不仅可以是字符串,还可以是数组(组合键的常见情况)和对象(罕见情况,因为对键顺序没有任何保证)-在这些情况下,您可能会遇到一些问题。原始文档将位于一个数组中,而不是单个对象。您的代码不适用于Bnif的情况。第一个参数记录为列表。正如您在u.map示例中所看到的,它可以是数组或对象。