簡體   English   中英

使用node.js函數在cloudant中創建搜索查詢

[英]Creating a search query in cloudant using node.js functions

如何在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值的所有文檔。

  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); } }); } 

我遇到了類似的問題,因此我使用了官方的cloudant節點模塊

使用$ npm install --save cloudant安裝它之后,我編寫了一個簡單的模塊來查詢我的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;
    });
}

我使用了插件:“ promises”,因為我更喜歡使用Promise而不是回調。

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);
            }
        })
    });

這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM