5

重複の可能性:
Node.js から CouchDB にドキュメントを挿入しようとすると、「bad_request invalid_json」エラーが発生する

CouchDB と Node.jsで最も投票された回答 - どのモジュールをお勧めしますか? Node.js と CouchDB を開始するために、nano や cradle などのライブラリを使用しないことをお勧めします。

ただし、データベースの作成、テーブルの作成、データの追加と表示など、すべての DBMS の標準操作をプログラムで実行する方法に関するチュートリアルは見つかりませんでした。

編集: (部分的な回答) CouchDB をインストールして起動した後、に移動しhttp://localhost:5984/_utils/script/couch.jsます。

4

4 に答える 4

5

まず、 CouchDBの本を読む必要があります。

モジュールを使用したくない理由がわかりません。コンテキストから外れた回答(おそらく1年前の回答)を取り、モジュールを使用しないことを決定したと思います。

それは物事を成し遂げるのに役立つとは思われません。:)実行された作業、修正された問題などを繰り返しているだけです。

CouchDBを学びたい場合は、本を読んでください。nanoのソースはAPIに非常に密接にマッピングされており、読みやすいはずなので読むことができますが、この本は完全な方法です。

何らかの理由で、他の人がすでにうまくやっていることを実行するために独自のモジュールを実装したい場合は、それを実行してください:)

代わりに、nanoの使用に関するリソースを探している場合は、かなりの数があります。

于 2012-07-25T17:31:33.807 に答える
2

のおかげでRuben Verborgh、私は自分でいくつかの情報源からマイクロチュートリアルをコンパイルしました。

var http = require('http')
var sys = require('sys')


var couchdbPath = 'http://localhost:5984/'

request = require('request')
h = {accept: 'application/json', 'content-type': 'application/json'}
request(
  {uri: couchdbPath + '_all_dbs', headers:h}, 
  function(err, response, body) { console.log(sys.inspect(JSON.parse(body))); }
)

// add database
request(
  {uri: couchdbPath + 'dbname', method:'PUT', headers:h},
  function (err, response, body) {
    if (err)
      throw err;
    if (response.statusCode !== 201)
      throw new Error("Could not create database. " + body);
  }
)

// Modify existing document
var options = {
  host: "localhost",
  port: 5984,
  path: "/dbname",
  headers: {"content-type": "application/json"},
  method: "PUT"
};

var req = http.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  //console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});

req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

// write data to request body
req.write(JSON.stringify({
  "_id":"rabbit",
  "_rev":"4-8cee219da7e61616b7ab22c3614b9526",
  "Subject":"I like Plankton"
}));

req.end();

次のドキュメントを使用しました。

于 2012-07-25T09:38:39.217 に答える
0

CouchDBはSQLデータベースエンジンではありません。それは「NoSQL」のもののファミリーにあります。

選択したり、テーブルを作成したりすることはありません。

それは完全に異なります。

実際にはRESTAPIを使用して機能しています。同様に、すべてのドキュメントにアクセスするには、次のURLでHTTP GETを使用してアクセスします:http://some.server/someDbName/_all_docs

より完全な紹介については、Googleで「CouchDBチュートリアル」を探すことをお勧めします。

あなたはこれまたはこれのような良いリンクを見つけるでしょう。(私は何も保証していません、彼らは紹介として見栄えがするだけです。)

node.jsでhttpリクエストを行うにrequestは、組み込みhttpモジュールのメソッドを使用できます。ショートカットメソッドはhttp.get、次のように使用できます。

var http = require( 'http' );

http.get( 'http://some.url/with/params', function( res ) {
    // res has the values returned
});

コードを読んだ後に編集します。

まず、使用しているドキュメントが古くなっている場合。ノードはv0.8であり、0.4ではありません。

第二に、あなたrequest = require('request')はいくつかの問題を与える必要があります(モジュールは存在しますか?)。最初の部分も実行されていないと思います。

第三に、今のところGETリクエストを試してみてください。何かのようなもの:

var http = require( 'http' );
http.get( 'http://localhost:5984/_all_dbs', function( res ) {
    console.log( res );
});

それが機能しているかどうかを確認します。もしそうなら、あなたはすでにcouchdbの使い方を知っています;)

最後に、最後のリクエストは間違っていないようです。多分それは関係してrequire('request')いるので、私にはわかりません。

于 2012-07-25T08:20:03.897 に答える
0

ここでは、学習に役立ついくつかの実践的な例、考え、コード スニペットを示します。

Coffeescript、Express、CoudbDB を使用したシンプルなブログ

CouchDB と Nodejs を使用した開発についての考え

CouchDB と Node.js をバインドする

Node.js、Express、および CouchDB の入門- このリンクは現在アクセスできないようですが、一時的な問題のようです。

これは CouchDB のテストに関するものです - Node.js を使用した CouchDB のモック テスト

それが役に立てば幸い。

于 2012-07-25T08:39:22.623 に答える