3

node.js で nano を介して開いたcouchdbセッションがあるとします。

var dbserv = require('nano')('http://localhost:5984');

アクセスできるcouchdbサーバーには、配列であるフィールドを持つユーザーがdbservいるデータベースがあります。usersgroups

groupsでユーザーを更新しjimたい場合users、ドキュメント全体を置き換えずにどのように更新しますか?

4

2 に答える 2

4

CouchDB

更新ハンドラーを作成するには、設計ドキュメントを作成します。

{
  "_id": "_design/yourapp",
  "updates": {
    "foo": "function(doc, req) {
      doc.groups.push(req.query.bar); // or do whatever you like with it
      return [doc, 'done'];
    }"
  }
}

id を使用してデータベースに PUT し、次の_design/yourappように GET します。

http://localhost:5984/users/_design/yourapp/_update/foo/jim?bar=baz

ナノカウチ

var dbserv = require('nano')('http://localhost:5984');
var db = dbserv.use('users');

var designdoc = {/* The above design document */};

db.insert(designdoc);

db.get('_design/yourapp/_update/foo/jim', {bar: 'baz'});

設計ドキュメントを挿入する必要があるのは 1 回だけであることに注意してください。 を使用して手動で挿入することもできますcurl。その後、ドキュメントを更新するには、上記で説明したように GET リクエストを行うだけです。

免責事項:テストされておらず、以前にnanoを使用したことはありませんが、それはあなたがしなければならないことの線上にあるはずです.

于 2012-01-25T02:44:37.550 に答える