CloudantDB& NodeJS:查询具有特定ID的数据

时间:2016-09-16 07:21:43

标签: angularjs node.js ibm-cloud cloudant

我刚在bluemix上创建了一个NodeJS cloudantDB Web启动器。然后,我有一个API从cloudantDB获取数据并获得成功,但它返回所有数据。请参阅js文件:

js file:

app.get('/api/provider', function(request, response) {

    console.log("Get method invoked.. ")

    db = cloudant.use(dbCredentials.dbProvider);
    var docList = [];
    var i = 0;
    db.list(function(err, body) {
        if (!err) {
            var len = body.rows.length;
            console.log('total # of docs -> '+len);
            if(len == 0) {
                // error
            } else {
                body.rows.forEach(function(document) {
                    db.get(document.id, { revs_info: true }, function(err, doc) {
                        if (!err) {
                            if(doc['_attachments']) {
                                // todo
                            } else {
                                var responseData = createResponseDataProvider(
                                        doc._id,
                                        doc.provider_type,
                                        doc.name,
                                        doc.phone,
                                        doc.mobile,
                                        doc.email,
                                        doc.logo,
                                        doc.address
                                        );
                            }
                            docList.push(responseData);
                            i++;
                            if(i >= len) {
                                response.write(JSON.stringify(docList));
                                console.log('ending response...');
                                response.end();
                            }
                        } else {
                            console.log(err);
                        }
                    });

                });
            }

        } else {
            console.log(err);
        }
    });

如果我想在API中添加参数以从DB获取特定数据,我们是否需要在cloudant上创建搜索索引或查询,而调用API则相同:app.get('/api/provider/:id')。请帮我复习和分享。感谢

2 个答案:

答案 0 :(得分:1)

您可以使用Cloudant的搜索功能。

  1. 您需要创建搜索索引。在搜索索引中,您可以管理要获取的数据。  示例:https://cloudant.com/for-developers/search/
  2. 创建搜索索引后执行此代码。
  3. ...

    var query = {q: "id:doc.id"};
    db.search('design document name', 'index name', query, function(er, result) {
       if (er) {
          throw er;
       }
       console.log(result);
    });
    

答案 1 :(得分:1)