2012-01-27 16 views
7

używam couchdb 1.1.1 w testowaniu Debiancouchdb: Mapa w dokumencie projektu daje compilation_error

i mam ten dokument projektu w bazie

{ 
"_id": "_design/Page", 
"_rev": "9-1944cdebabf20ae569eab7b534b43e67", 
"views": { 
    "all": { 
     "map": "function(doc) {}" 
    } 
}, 
"language": "javascript" 
} 

ale wciąż mam w http://localhost:5984/db_development/_design/Page/_view/all

tym {"error":"compilation_error","reason":"Expression does not eval to a function. ((new String(\"function(doc) {}\")))"}

Próbowałem uruchomić różne proste funkcje map w interpreteru spidermonkey-bin i zostały one poprawnie załadowane, ale sam Błąd e w CouchDB

ja naprawdę nie widzę, gdzie problemem jest ....

Ok, na liście dyskusyjnej stwierdziliśmy, że jest to konieczne do funkcji zawijać do nawiasach „()”, bo coś ma zmieniło w nowszych SpiderMonkey

Więc funkcja mapa wygląda następująco: "map": "(function(doc) { emit([doc._id, doc._rev]);})"

Odpowiedz

10

Ok, na liście dyskusyjnej stwierdziliśmy, że jest to konieczne do funkcji nawiasach wrap „() ”, bo coś się zmieniło w nowszych SpiderMonkey

Więc map funkcja wygląda tak: "mapa": "(function() {doc Emit ([doc._id, doc._rev]);})"

+1

Właśnie uratowałeś dzień dla mnie, Ivan. Dzięki! –

-3

nie ma return wewnątrz funkcji mapy. Twoja funkcja mapy musi coś zwrócić.

Jeśli chcesz otrzymać surowy zrzut wszystkich dokumentów, nie ma wbudowaną funkcję do tego: http://wiki.apache.org/couchdb/HTTP_Document_API#all_docs

+0

Mogę zmienić na "function (doc) {emit (doc.id, doc.re)) lub bardziej złożoną funkcję, ale wciąż ten sam błąd –

+1

-1, ponieważ odpowiedź jest po prostu błędna. Funkcje mapy couchdb nie muszą zwracać niczego, co więcej, funkcje javascript nie muszą zwracać niczego, aby i tak były ważnymi funkcjami. – hasen

0

Jeśli pojawi się ten błąd, należy uważać, aby dokument projektowy był poprawnie zbudowany. (Mam taki komunikat z powodu głupiego błędu w mojej definicji shows.)

Ponadto, nie jestem pewien, czy to jest problem, ale nie sądzę, że powinno być spacje przed nawiasami klamrowymi w definicji funkcji .