2012-03-25 6 views
0

Ich versuche eine Webanwendung mit nodejs und couchdb zu schreiben. In der Couch speicher ich Inhalt meiner getrennten Seite. Was mein Problem ist ..Autoinkrement in couchdb

ich würde eine schöne Urls wie diese:

http://mypage.com/content/1/blabla-detail.html 
http://mypage.com/content/2/blabla-detail.html 
http://mypage.com/content/5/blabla-detail.html 
http://mypage.com/content/n/blabla-detail.html 

allgemein

http://mypage.com/content/{OID}/blabla-detail.html 

so brauche ich eine Art wie ein Autoinkrement in couchdb. Natürlich kann ich ein _id verwenden - es ist ein einzigartiges in Couchdb, aber ... Uuid in der Couch ist lang hash ... Ich will nicht, dass lange Hash in meinen URLs :(Ich suche einige einzigartige, aber kurze Werte.

Ich denke nur über das Erstellen von Ansicht, um die Anzahl aller Zeilen in Dokumenten zu erhalten, aber ... was für den Fall, wenn zur gleichen Zeit nur wenige Benutzer ein neues Element speichern werden.Es wird ein Problem sein - couchdb hat keine Transaktion.

ich bin fest.

Kann jemand mir helfen, dieses Problem zu lösen?

+1

Sie können in CouchDB kein Autoinkrement durchführen, und Sie sollten auch nicht versuchen, es aufgrund seiner potenziell verteilten Natur zu versuchen. Wenn Sie benutzerfreundliche URLs erstellen möchten, können Sie "Slugs" basierend auf dem Blog-Titel generieren. Außerdem gibt es eine bestehende Blog-Demo mit dem Namen [Sofa] (https://github.com/jchris/sofa), die wahrscheinlich einen Besuch wert ist. –

+0

Ich kann keinen Blog-Titel verwenden, um freundliche URLs zu erstellen, weil ich viele gleiche Titel von Post/Seiten erwartet habe. Also werde ich eine Nummer hinzufügen müssen - also zurück zu meiner ersten Frage :) –

Antwort

1

ich bin nicht sicher, ob ich Ihre Frage bekam. S o Sie haben eine CDB-Datenbank, in der Sie Ihre separaten Seiten Ihres Blogs als Dokumente speichern. Dann möchten Sie diese Dokumente über ihre _ids erreichen, die als eindeutige Hashes gespeichert sind. Habe ich recht? Da diese Hashes dreckig sind, möchten Sie ihnen einzigartige, aber schönere Zahlen geben.

Wenn ja, kann ich Ihnen empfehlen, Ektorp API zu verwenden. Hier stellen Sie über CouchDBConnector eine Verbindung zur Datenbank her und Sie können dann alle Ihre Dokumente über die Methode getAllDocIds als List<String> aufrufen. Dann können Sie einfach REST-Dienste schreiben und bessere IDs geben. Ich hoffe es hilft.