5

node.jsとcouchdbの機能を実験するための簡単なテストアプリを書いています。これまでのところ気に入っていますが、問題が発生しました。私は広く探しましたが、答えが見つからないようです。私のテスト サーバー (単純なアドレス帳) は 2 つのことを行います。

  1. ユーザーが次に行くとlocalhost:8000/{id}、私のアプリはそのIDを持つユーザーの名前と住所を返します。
  2. ユーザーが次に行く場合localhost:8000/、アプリはハイパーリンクである名前のリストを返し、ページに移動する必要がありますlocalhost:8000/{id}

最初の要件を機能させることができました。カウチデータベースからすべての名前のリストを取得する方法が見つからないようです。それが私が助けを必要としているものです。ここに私のコードがあります:

var http = require('http');
var cradle = require('cradle');
var conn = new(cradle.Connection)();
var db = conn.database('users');

function getUserByID(id) {
    var rv = "";

    db.get(id, function(err,doc) {
        rv = doc.name;
    rv += " lives at " + doc.Address;
});

return rv;
}

function GetAllUsers() {
var rv = ""
return rv;
}

var server =  http.createServer(function(req,res) {
res.writeHead(200, {'Content-Type':'text/plain'});
var rv = "" ;
var id = req.url.substr(1);

    if (id != "")
    rv = getUserByID(id);
else
    rv = GetAllUsers();

    res.end(rv);


});

server.listen(8000);
console.log("server is runnig");

ご覧のとおり、GetAllUsers() 関数を入力する必要があります。どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

9

私はあなたが(私が作成したライブラリであるnanoを使用して)次のようなことをしていることを期待しています:

var db       = require('nano')('http://localhost:5984/my_db')
  , per_page = 10
  , params   = {include_docs: true, limit: per_page, descending: true}
  ;

db.list(params, function(error,body,headers) {
  console.log(body);
});

あちらで何を達成しようとしているのかよくわかりませんがhttp、さらに例を探している場合は、気軽に私のブログにアクセスしてください。ノードとカウチを使い始める人向けのブログ投稿を書きまし

上で述べたように、独自のビューを作成する必要がある時が来ます。CouchDB API Wikiをチェックしてから、本をざっと読んで、デザイン ドキュメントとは何かをチェックしてください。必要に応じて、私が持っているビューの生成とクエリ用のテスト コードをチェックしてみてください。

于 2011-09-05T03:18:47.303 に答える
8

ユーザーを一覧表示する CouchDB ビューを作成できます。このトピックの全体像を把握するために読むべき、CouchDB ビューに関するいくつかのリソースを以下に示します。

では、次のように構造化されたドキュメントがあるとします。

{
    "_id": generated by CouchDB,
    "_rev": generated by CouchDB,
    "type": "user",
    "name": "Johny Bravo",
    "isHyperlink": true
}

次に、次のような CouchDB ビュー (マップ部分) を作成できます。

// view map function definition
function(doc) {
    // first check if the doc has type and isHyperlink fields
    if(doc.type && doc.isHyperlink) {
        // now check if the type is user and isHyperlink is true (this can also inclided in the statement above)
        if((doc.type === "user") && (doc.isHyperlink === true)) {
            // if the above statements are correct then emit name as it's key and document as value (you can change what is emitted to whatever you want, this is just for example)
            emit(doc.name, doc);
        }
    }
}

ビューが作成されると、node.js アプリケーションからクエリを実行できます。

// query a view
db.view('location of your view', function (err, res) {
    // loop through each row returned by the view
    res.forEach(function (row) {
        // print out to console it's name and isHyperlink flag
        console.log(row.name + " - " + row.isHyperlink);
    });
});

これはほんの一例です。まず、上記のリソースに目を通し、CouchDB ビューの基本とその機能を学ぶことをお勧めします。

于 2011-08-18T19:04:27.720 に答える