2012-01-27 16 views
7

Io uso CouchDB 1.1.1 in Debian testingCouchDB: mappa in documento di progetto dà compilation_error

e ho questo documento di progettazione nel database

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

ma ancora entrare in http://localhost:5984/db_development/_design/Page/_view/all

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

Ho provato a eseguire diverse semplici funzioni di mappa nell'interprete spidermonkey-bin e sono stati caricati correttamente, ma sam e errore di CouchDB

Io davvero non riesco a vedere, in cui problema è ....

Ok, nella mailing list ho trovato che è necessario per avvolgere la funzione di parentesi "()", perché qualcosa ha cambiato nel più recente spidermonkey

Così mappa funzione è simile a questo: "map": "(function(doc) { emit([doc._id, doc._rev]);})"

risposta

10

Ok, nella mailing list ho trovato che è necessario per avvolgere la funzione di parentesi "() ", perché qualcosa è cambiato nel più recente spidermonkey

Così map funzione è simile al seguente: "mappa": "(function (doc) {Emit ([doc._id, doc._rev]);})"

+1

Hai appena salvato il giorno per me, Ivan. Grazie! –

-3

non c'è istruzione return all'interno della funzione della mappa. La tua funzione mappa deve restituire qualcosa.

Se avete bisogno di ottenere un dump raw di tutti i documenti, v'è un built-in funzione per questo: http://wiki.apache.org/couchdb/HTTP_Document_API#all_docs

+0

Posso cambiarlo in "function (doc) {emit (doc._id, doc._rev)}" o più funzione complessa ma ancora lo stesso errore –

+1

-1 perché la risposta è semplicemente sbagliata. Le funzioni di mappa di couchdb non hanno bisogno di restituire nulla, inoltre, le funzioni di javascript non devono necessariamente restituire nulla per essere valide funzioni. – hasen

0

Se si verifica questo errore, fare attenzione che il documento di progettazione sia strutturato correttamente. (Ho ricevuto un messaggio come questo a causa di un errore stupido nella mia definizione shows.)

Inoltre, non sono sicuro che questo sia un problema, ma non penso che ci dovrebbe essere uno spazio prima delle parentesi graffe nella definizione della funzione .

Problemi correlati