2011-01-04 7 views
1

J'utilise couchdb comme téléchargé de http://couch.io/get sur Mac OS X 10.6, et il ne gère pas correctement Date s. Par exemple, la vue suivante (carte seulement) donne émette {} pour les objets de date:Version de CouchDB javascript: Date de publication

function(doc) { 
    emit(new Date(), null); 
} 

La même chose est valable pour les variations à la date: Date("2000-10-10"), Date("2000/10/10") et Date("10/10/2000") produisent tous {}.

Je suppose que cela a à voir avec ma version javascript, puisque Date fonctionne comme je l'attendais sur ma machine Linux. Pourtant, quand je lance js à partir de la ligne de commande, il a un comportement complètement différent pour Date s. S'il s'agit d'un problème de version, comment puis-je savoir quelle version de javascript CouchDB est en cours d'exécution, comment puis-je changer cela, et quelle version dois-je utiliser?

Répondre

2

Je suppose que pour une raison quelconque, le toString() de la date n'est pas appelé, donc il obtient {} comme une représentation générique d'un objet javascript.

Je ne sais pas du résultat que vous attendiez, mais vous pouvez utiliser l'un de ces:

emit((new Date()).toString(), null); // Tue Jan 04 2011 13:24:48 GMT-0600 (CST) 

emit((new Date()).getTime(), null); // 1294169100617 
+0

Merci, c'est exactement la question. Si j'appelle (new Date ("2010/01/04")). ToString() (avec des barres obliques à la place des tirets) alors cela fonctionne correctement. Savez-vous comment changer la version de js couch et quelle est la meilleure/la plus à jour/la version standard? –

+0

@Danny: Désolé, mais je ne connais pas la version. Je ne sais même pas quel interprète ils utilisent. Je serais surpris si c'était facile de changer les versions. Cependant, j'ai une expérience limitée de CouchDB, et j'ai seulement brièvement lancé CouchDBX pour m'assurer que cette solution fonctionnait. – user113716