2012-01-27 12 views
7

verir ve ben veritabanındaCouchDB: Tasarım belgesinde haritası Ben Debian testlerde</p> <p>CouchDB 1.1.1 kullanmak compilation_error

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

bu tasarım belgesi var ama hala http://localhost:5984/db_development/_design/Page/_view/all

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

Ben spidermonkey-bin tercüman farklı basit bir harita fonksiyonlarını çalıştırmak için çalıştı ve düzgün yüklendi fakat sam CouchDB e hatası

sorunun nerede olduğunu Gerçekten, göremiyorum

....

Tamam, posta listesindeki bir şey vardır çünkü, ") (" parantez işlevi sarmak için gerekli olduğunu bulduk yeni SpiderMonkey değişti

Yani haritası işlevi şöyle görünür: "map": "(function(doc) { emit([doc._id, doc._rev]);})"

cevap

10

Tamam, posta listesindeki Ben "parantez işlevi sarmak için gerekli olduğunu bulduk() " bir şey daha yeni SpiderMonkey değişti çünkü

Yani fonksiyon şöyle map: "map": "(function (doc) {yayarlar ([doc._id, doc._rev]);})"

+1

Sadece günü kurtardın, Ivan. Teşekkürler! –

-3

haritası işlevi içinde geri dönüşü olmayan bir deyim yoktur. Harita işlevinizin bir şeyler döndürmesi gerekiyor.

tüm belgelerin ham dökümü almak gerekiyorsa, orada yerleşik bir özellik bunun için: http://wiki.apache.org/couchdb/HTTP_Document_API#all_docs

+0

bunu değiştirebilir "fonksiyonu (doc) {yayarlar (doc._id, doc._rev)}" ya da daha karmaşık fonksiyon ama yine aynı hata –

+1

-1 cevabı sadece düz yanlış olduğu için. couchdb harita fonksiyonlarının bir şey döndürmesine gerek yok, dahası, javascript fonksiyonları zaten geçerli fonksiyonlar olmak için bir şey döndürmeye gerek yok. – hasen

0

Bu hatayı alırsanız, tasarım belgesinin doğru şekilde yapılandırıldığından emin olun. (Bu benim shows tanımımdaki aptal bir hata nedeniyle böyle bir mesajım var.)

Ayrıca, bunun bir sorun olduğundan da emin değilim, ancak işlev tanımında küme parantezinden önce bir boşluk olması gerektiğini düşünmüyorum .