In-line View Определения Диван Db ​​Ektorp - PullRequest
0 голосов
/ 12 октября 2011

Я использую Couch DB с Ektorp в Spring 3. Я прочитал документ и попытался реализовать примеры. Я так новичок в этих технологиях. Это точка, где я не понял:

@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();
    }

}

Как это работает и как их определить, что происходит в этих строках?

1 Ответ

2 голосов
/ 12 октября 2011

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 , который может создавать, удалять, очищать, находить и т. Д.

Ознакомьтесь с дополнительной документацией по , определяющей в строке Views

...