如何使用node.js中的cradle通过给定限制(start_limit,end_limit)检索couchDB数据?

时间:2013-02-27 05:41:21

标签: node.js couchdb cradle

在我的应用程序中,我正在使用带有coucdhDB数据库的node.js。现在我想通过给定限制获取数据,如果用户提到起始限制为10,结束限制为20表示我想获取10到20之间的数据我怎么能这样做。

1 个答案:

答案 0 :(得分:0)

这是一个应该在面向公众的面向NPM数据的CouchDB上运行的示例。原谅可怕的代码和糟糕的参数检查和错误处理,但你会明白的。由于此示例CouchDb视图使用文本包名称,我不是在做数值示例,而是为了获取名称介于“ya”和“yaa”之间的包,我将使用以下内容访问这个面向公众的数据库:

http://isaacs.iriscouch.com/downloads/_design/app/_view/pkg?group_level=2&start_key=%5B%22ya%22%5D&end_key=%5B%22yaa%22,%7B%7D%5D

使用下面的代码对我的节点服务器进行等效处理:

http://yourapi.goeshere.xxx:3000/rangetest/ya-yaa

使用以下代码:

var express = require('express')
  , cradle = require('cradle')
  , routes = require('./routes')
  , http = require('http')
  , path = require('path');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
});

app.get('/rangetest/:from-:to', function(req, res) {
    console.log('entering range test');
    var theFrom = req.params.from;
    var theTo = req.params.to;
    console.log('range sent was ' + theFrom + " to : " + theTo);


    var testConn = new(cradle.Connection)('http://isaacs.iriscouch.com', {
        cache: true,
        raw: false
    });

    var testDb = testConn.database('downloads');
    var testParams = "_design/app/_view/pkg?group_level=2&start_key=%5B%22" + theFrom + 
        "%22%5D&end_key=%5B%22" + theTo + "%22,%7B%7D%5D";
    testDb.get(testParams, function (err, testResult) {
        if (err)
        {
            console.log(err);
            res.json(500, err);
        } else {
            res.json(testResult);
        }
    });

 });