0

私は Spring 3 で Ektorp で Couch DB を使用しています。ドキュメントを読み、例を実装しようとしました。私はこれらのテクノロジーにとても慣れていません。これが私が理解できなかったポイントです:

@View( name = "all", map = "function(doc) { if (doc.type == 'Sofa' ) emit( null, doc._id )}")
public class SofaRepository extends CouchDbRepositorySupport<Sofa> {

    @View( name = "avg_sofa_size", map = "function(doc) {...}", reduce = "function(doc) {...}")
    public int getAverageSofaSize() {
        ViewResult r = db.queryView(createQuery("avg_sofa_size"));
        return r.getRows().get(0).getValueAsInt();
    }

}

そのウィーブはどのように機能し、どのように定義するのか、その行で何が起こるのでしょうか?

4

1 に答える 1

2

CouchDbRepositorySupport既定で、SofaRepository に次のメソッドが提供されます。

public void add(Sofa entity);
public void update(Sofa entity);
public void remove(Sofa entity);
public Sofa get(String id);
public Sofa get(String id, String rev);
public List<T> getAll();
public boolean contains(String docId);

このインライン ビュー アノテーションを使用すると、次のようになりCouchDbRepositorySupportます。

@View( name = "all", map = "function(doc) { if (doc.type == 'Sofa' ) emit( null, doc._id )}") 

getAll()メソッドからの戻り値を再定義します。

また、インライン ビューを使用して別のメソッドgetAverageSofaSize()をリポジトリに追加します。

@View( name = "avg_sofa_size", map = "function(doc) {...}", reduce = "function(doc) {...}")

これは明示的にqueryそのdb.queryView(createQuery("avg_sofa_size"));undersntadを提供します。dbこれは、作成、削除、パージ、検索などを実行できるCouchDbConnectorです。

インライン ビューの定義に関するその他のドキュメントを参照してください。

于 2011-10-12T15:22:49.120 に答える