2015-04-15 74 views
0

我怎樣才能創建一個Node.js的功能,可以在我的cloudant數據庫執行查詢並返回我包含其中具有特定值的特定鍵匹配的文檔。 例如可以說以下是文件: -如何使用Node.js功能cloudant創建一個搜索查詢

{ 
    "_id": "23966717-5A6F-E581-AF79-BB55D6BBB613", 
    "_rev": "1-96daf2e7c7c0c277d0a63c49b57919bc", 
    "doc_name": "Markdown Reference", 
    "body": "Lorem Ipsum", 
    "ts": 1422358827 
} 

,我想這個文件與它的價值在搜索TS字段 我怎麼能寫我的app.js文件中的函數(語法)將於ts值作爲輸入並返回包含類似ts值的所有文檔。

+0

到目前爲止你有什麼? –

+0

https://github.com/cloudant/nodejs-cloudant – Jason

+0

感謝Scott,但我是Node.js的新手,無法理解您項目的所有流程。所以如果你能給我一點關於整個流程的信息,那將是一個很大的幫助。 –

回答

1
  1. 數據庫上創建一個Cloudant查詢索引是這樣的:

    curl -u $username:$password -X POST https://$username.cloudant.com/$databasename/_index -H "Content-Type:application/json" -d '{"index": {"fields": ["ts"]}}' 
    
  2. 使數據庫公開可讀

  3. 這裏的Node.js的功能:

    #!/usr/bin/env node 
    var request = require('request'); 
    var ts = process.argv[2]; 
    if (!ts) { 
        console.log('Usage: app.js <ts>'); 
        process.exit(1); 
    } 
    query(ts); 
    
    function query(tsval) { 
        var cloudantquery = { 
         "selector": { 
          "ts": {"$eq": parseInt(tsval)} 
         }, 
         "fields": ["_id","doc_name"] 
        }; 
    
        request({ 
         method: 'POST', 
         uri: 'https://$username.cloudant.com/$databasename/_find', 
         json: true, 
         body: cloudantquery 
        }, function (error, response, body) { 
         if (!error && response.statusCode == 200) { 
          console.log(body); 
         } 
        }); 
    } 
    
0

我面臨類似的問題,所以我使用官方cloudant node module

使用 $ npm install --save cloudant 安裝後,我寫了一個簡單的模塊來查詢我的雲數據庫。

cloudant.js

//Query 
exports.couchQuery = function(query){ 
    var Cloudant=require('cloudant'); 
    var cloudant = Cloudant({url: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', plugin:'promises'}); 
    var mydb = cloudant.db.use('xxxxxxxxxx'); 

    return mydb.find(query).then(res=>{ 
     return res; 
    }).catch(err=>{ 
     return err; 
    }); 
} 

我使用的插件: '用' 怎麼我更喜歡回調使用的承諾。

routes.js

app.get("/query", function (req, res) { 
     couchdb.couchQuery({ 
      "selector": { 
       "type": "input", 
       "_id": { 
        "$gt": 0 
       } 
      }, 
      "fields": [ 
       "name", 
       "quantity" 
      ], 
      "sort": [ 
       { 
        "_id": "asc" 
       } 
      ] 
     }).then(result => { 
      if (result.docs) { 
       res.send(result.docs); 
      } 
     }) 
    }); 

這爲我工作。

+0

如何將其存儲爲字符串的日期進行排序。 例如:{「名」:「愛麗絲」,「日期時間」:「2015年11月26日10點22分24秒Z」} 對我來說,它的排序爲字符串時,我在PARAMS通過爲 {Q:「* :*',排序:[「-time」]} – AnoopGoudar