Couch DB - 将输入参数传递给视图

时间:2014-12-30 15:51:56

标签: mapreduce couchdb

我正在从我的Web应用程序中将SQL从Cou​​ch DB转移到我的第一个应用程序。

虽然我不能说为什么我不喜欢SQL查询,但不确定我不喜欢,让CURL请求访问我的数据库声音的想法必须比使用PHP PDO更好。

我花了一天半的时间试图熟悉沙发DB HTTP API。我无法声称我已经彻底阅读了API,但是在开始编码之前谁彻底阅读了API。所以我的,可能是愚蠢的问题是 - how do I pass an variable other than doc to a map function while making a http request to the view. API清楚地说地图函数只接受一个参数,即" doc",在这种情况下,下面的函数本身是错误的,但我可以&找不到API中允许我使用最终用户提供的输入查询数据库的任何部分。

我的地图功能是

function(doc, pid2){

      if (doc.pid === pid2)
    {
        emit(doc._id, doc) ;

    }
}

pid2是由前端用户提供的数字。

    <?php
    $pid2 = file_get_contents(facebook graphi api call_returns a Profile ID) ;
    $user_exists = HTTP request to couch DB view to return 
in JSON format the list of JSON documents with pid = $pid2
?>

1 个答案:

答案 0 :(得分:7)

让您的视图以doc.pid作为键

发出文档
function(doc) { 
    emit(doc.pid, doc);
}

并使用key参数检索正确的文档:

http://localhost:5984/<database>/_design/<designdoc>/_view/<viewname>?key=<pid2>

这应该返回包含doc.pid === pid2的所有文档。