0

Couchdb は、このような URL を吐き出し
http://127.0.0.1:5984/roxanne/_design/request/_view/images
ます。これには、データベースとすべての json が含まれています。問題は、すべての json を解析して、/getDocuments という別の URL に送信することです。ノード、エクスプレス、ナノを使用しています。私のserver.jsには、このコードがあります。

app.get('/getDocuments', function(req, res){
  var roxanne = nano.use('roxanne');
  nano.db.get('roxanne', function(err, body) {
    if (!err) {
      console.log(body);
    }
    res.json(body);
  });
}) 

これは私がこれを印刷したいものではありません:

{
  "db_name": "roxanne",
  "doc_count": 7,
  "doc_del_count": 2,
  "update_seq": 12,
  "purge_seq": 0,
  "compact_running": false,
  "disk_size": 204904,
  "data_size": 3369,
  "instance_start_time": "1375974435712463",
  "disk_format_version": 6,
  "committed_update_seq": 12
}

これは役に立ちません。URLが出力して解析したすべてのjsonが必要です。私も少し実験を行いましたが、予期しないトークンILLEGALと表示されました。

'{"total_rows":6,"offset":0,"rows":[

これが私の問題であることがわかりましたが、それが何を意味するのか正確にはわかりません。 CouchDB から JSON を解析するときに「total_rows」を通過する方法

だから私の質問は:

すべてのjsonを含むlocalhost URLを/ getDocumentに取得して、プロジェクトの後半でjsonとそれぞれを取得できるようにするにはどうすればよいですか。

ありがとう!ご不明な点がございましたら、お問い合わせください。

ps:私の実験はこれでした:

    var json = '{"total_rows":6,"offset":0,"rows":[
{"id":"American_Airlines","key":"American_Airlines","value":{"_id":"American_Airlines","_rev":"1-d915fad8f624769d274794717b60311f","name":"American_Airlines","industry":"Flight","employee_count":"820,712,807","revenue":"$1,219,280,981","lead_source":"Linkedin","use_case":"exec manag","sales_cycle":"80","adm":"Adm goes here","se":"Se goes here","path":"assets/upload-images/2013/08/1375890760.png","fileTime":"1375890760"}},
{"id":"Dicks_Sporting_Goods","key":"Dicks_Sporting_Goods","value":{"_id":"Dicks_Sporting_Goods","_rev":"1-90cc5645b417ba0658aa7dcf5d576a51","name":"Dicks_Sporting_Goods","industry":"Store","employee_count":"3,098,089","revenue":"$2,918,798","lead_source":"website","use_case":"seo, stuff, moar stuff","sales_cycle":"20","adm":"Adm goes here","se":"Se goes here","path":"assets/upload-images/2013/08/1375890818.png","fileTime":"1375890818"}},
{"id":"FedEx","key":"FedEx","value":{"_id":"FedEx","_rev":"2-709a9dba4723b77fb6c40b3f0110ef97","name":"FedEx","industry":"industy here","employee_count":"100,000,000,000,000","revenue":"$10,000,000,000,000,000,000","lead_source":"twitter","use_case":"use case","sales_cycle":"90","adm":"adm goes here","se":"se goes here","path":"assets/upload-images/2013/08/1375888322.png","fileTime":"1375888322"}},
{"id":"Five_Guys","key":"Five_Guys","value":{"_id":"Five_Guys","_rev":"1-936c3f2da5e20031d618b005e5080181","name":"Five_Guys","industry":"Burger Joint","employee_count":"452,342,362","revenue":"$2,352,235,235,234","lead_source":"linkedin","use_case":"Data","sales_cycle":"20","adm":"Adm goes here","se":"Se goes here","path":"assets/upload-images/2013/08/1375892543.png","fileTime":"1375892543"}},
{"id":"hulu","key":"hulu","value":{"_id":"hulu","_rev":"1-d60340fde35feabbf78463c28684f3e3","name":"hulu","industry":"Internet","employee_count":"124,243,521,346","revenue":"$34,624,573,467,245,643","lead_source":"Facebook","use_case":"unkown","sales_cycle":"333","adm":"Kenneth","se":"MEMMEMEME","path":"assets/upload-images/2013/08/1375892898.jpg","fileTime":"1375892898"}},
{"id":"jiffy_lube","key":"jiffy_lube","value":{"_id":"jiffy_lube","_rev":"1-6c6b6fe2213c541b9c437aa8c47286fd","name":"jiffy_lube","industry":"industy here","employee_count":"12,124,124,124","revenue":"$23,897,629,871","lead_source":"scrubs","use_case":"something ","sales_cycle":"90","adm":"Adm goes here","se":"Se goes here","path":"assets/upload-images/2013/08/1375890322.jpg","fileTime":"1375890322"}}
]}';
    var obj = JSON.parse(json);
    res.json(obj)

どの出力:

var json = '{"total_rows":6,"offset":0,"rows":[
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unexpected token ILLEGAL

PS: これは機能したので、問題は total_rows ですが、ローカルホストを別の URL に移動する方法を理解する必要があります。

var json = '{"id":"American_Airlines","key":"American_Airlines","value":{"_id":"American_Airlines","_rev":"1-d915fad8f624769d274794717b60311f","name":"American_Airlines","industry":"Flight","employee_count":"820,712,807","revenue":"$1,219,280,981","lead_source":"Linkedin","use_case":"exec manag","sales_cycle":"80","adm":"Adm goes here","se":"Se goes here","path":"assets/upload-images/2013/08/1375890760.png","fileTime":"1375890760"}}';
  var obj = JSON.parse(json);
  res.json(obj)

これはうまくいきましたが、私が言ったように、まだ主な問題を理解しようとしているので、total_rows の問題に焦点を当てます。すみません、まとめて複数質問してしまいました。それは人々を混乱させる可能性があると思います。

EDIT / ANSWER
Node.jsを使用してcouchdbからすべてのドキュメントを取得する

ここのこの投稿は私をとても助けてくれました!私が遭遇した多くの問題を解決しました。助けが必要な未来の人々のために。

db.view私が探していたものです!ありがとうございました!

4

1 に答える 1

0

データベースドキュメントではなく、データベース統計を照会しています。特定のドキュメントを取得する場合は、次のようにドライバーを使用します。

var roxanne = nano.use('roxanne');
roxanne.get('document_id', function(err, body) {
    console.log(err, body);
});

roxanne.getの代わりに に注意してくださいnano.get

すべての書類を取得したい場合は、

var roxanne = nano.use('roxanne');
roxanne.bulk('_all_docs', {include_docs: true}, function(err, docs) {
    console.log(err, docs);
});
于 2013-08-08T16:44:13.227 に答える