2012-03-25 6 views
0

Я пытаюсь написать веб-приложение, используя nodejs и couchdb. В кушетке я храню содержимое моей отдельной страницы. Что такое моя проблема ..Autoincrement in couchdb

я бы иметь хороший URLs, как это:

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 

обычно

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

так что мне нужно какое-то вроде Autoincrement в CouchDB. Offcourse я могу использовать _id - это уникальный в couchdb, но ... uuid в кушетке длинный хеш ... я не хочу, чтобы этот длинный хеш в моих URL :(я смотрю некоторые уникальные, но короткие значения.

Я просто думаю о создании представления, чтобы получить количество всех строк в документах, но ... что в случае, когда в это же время несколько пользователей сохранят новый элемент. Будет проблема. У couchdb нет транзакции.

Я застрял.

Может кто-нибудь помочь мне решить эту проблему?

+1

Вы не можете делать автоматическое увеличение в CouchDB, и вы не должны пытаться из-за его потенциально распределенной природы. Если вы хотите создать дружественные URL-адреса, вы можете создать «пули» на основе заголовка блога. Кроме того, существует существующая демо-версия блога под названием [Sofa] (https://github.com/jchris/sofa), которая, вероятно, стоит проверить. –

+0

Я не могу использовать заголовок блога, чтобы создать дружественные URL-адреса, потому что я ожидал много таких же заголовков сообщений/страниц. Поэтому мне нужно будет добавить к нему некоторый номер, поэтому я возвращаюсь к своему первому вопросу :) –

ответ

1

Я не уверен, если я получил ваш вопрос. S o у вас есть база данных CDB, в которой вы храните отдельные страницы своего блога в качестве документов. Затем вы хотите получить эти документы через свои _id, которые хранятся как уникальные хэши. Я прав? Поскольку эти хэши грязные, вы хотите дать им уникальные, но более красивые цифры.

Если да, я могу порекомендовать вам использовать Ektorp API. Здесь вы подключаетесь к базе данных через CouchDBConnector, а затем вы можете позвонить по всем вашим документам по методу getAllDocIds как List<String>. Тогда просто вы можете написать службы REST и дать лучшие идентификаторы. Надеюсь, поможет.