couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Newson <>
Subject Re: Rewrite /user/bob to user:bob
Date Fri, 19 Aug 2011 08:04:16 GMT
Curiously, I generally think the opposite. If your application has
properties that must be unique, or if there are non-commutative
operations on your documents, it's better to to use that knowledge to
form your id (a typical approach being to cons all the values together
and take the md5 and sha1 of the result). If you do so, then couchdb
will largely prevent (and at least detect) conflicts for you. If none
of your documents can possibly conflict with any other then a UUID is
perfectly justified.


On 19 August 2011 01:18, Mark Hahn <> wrote:
> I personally think using anything other than UUIDs for doc ids is a mistake.
>  I have found times when I want to change the architecture and having fixed
> doc ids made it impossible.
> On Thu, Aug 18, 2011 at 11:47 AM, Simon Leblanc <>wrote:
>> Hello,
>> I'm trying to write a couchapp with multiple users. Two users can't have
>> the same name, since I want to access user bob's profile through /user/bob.
>> Similarly, I store other documents (let's call them stuffs) with unique ids
>> that I would like to access through /stuff/somestuff.
>> A user can have the same name as a stuff, and vice versa. That's why I
>> can't use bob or somestuff as _id (otherwise I couldn't have a stuff named
>> bob or a user named somestuff).
>> I see 3 options:
>> use different databases for users and stuffs, but that means two design
>> documents and it kind of defeats the purpose of couchapps
>> use uuids and deal with names in a custom manner. Sounds difficult. I would
>> really prefer the third option:
>> use a naming convention for ids, like user:bob and stuff:somestuff.
>> My favorite choice so far is the third option. The colon can be replaced by
>> any character, like dash, underscore, comma, @ or even nothing if this can
>> help. The prefix can also be a postfix.
>> I initially tried with a forward slash which was perfect until I realized
>> it was not really supported and it caused problems with update functions
>> (see COUCHDB-1229).
>> Is it possible to rewrite /user/bob to, for instance,
>> /_show/profile/user:bob or /_show/profile/user_bob ?
>> I tried {"from": "user/*", "to": "_show/profile/user:bob"} and variants
>> with no success.
>> If it is not possible, what would be the best alternative?
>> Thanks a lot for your help,
>> Simon
>> PS: For the sake of learning, I'm trying to write a pure couchapp without
>> client-side javascript…

View raw message