couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Melo <andrew.m...@gmail.com>
Subject Re: Validate uniqueness field
Date Tue, 30 Mar 2010 14:49:06 GMT
On Tue, Mar 30, 2010 at 9:44 AM, faust 1111 <faust451@gmail.com> wrote:
> Yes its only one way.
> Why couch don't implement uniqueness in simple way?

It does implement it in a simple way. You get a unique field. Couch
makes sure that only one document has that field at a same time.

Actually, I was just thinking, and someone else can correct me if I'm
wrong, but you may be able to do ['email','username'] as the _id.

-Melo

> 2010/3/30 Andrew Melo <andrew.melo@gmail.com>:
>> On Tue, Mar 30, 2010 at 9:13 AM, faust 1111 <faust451@gmail.com> wrote:
>>> It's very frightful for me implement uniqueness in this way
>>> create doc for each uniq field and keep it in actual state when i update docs.
>>>
>>> may be better check uniqueness only in application layer?
>>> now i don't think about distribute.
>>
>> If you don't do it the way Jan suggested, you may end up with a race
>> condition, even if you don't distribute the database (i.e. if two
>> people register (nearly) simultaneously with the same username/email).
>> You would then have to support backing out/correcting any errors
>> manually in your application level code. If you're comfortable with
>> that, feel free, but Jan's way is much cleaner, in the long run.
>>
>> best,
>> Andrew
>>
>>> 2010/3/28 Jan Lehnardt <jan@apache.org>:
>>>> You need to have two documents with a unique ID each.
>>>>
>>>> Cheers
>>>> Jan
>>>> --
>>>>
>>>> On 27 Mar 2010, at 17:12, faust 1111 wrote:
>>>>
>>>>> but what if i have two unique fields
>>>>>  login
>>>>>  email
>>>>>
>>>>> 2010/3/28 J Chris Anderson <jchris@gmail.com>:
>>>>>>
>>>>>> On Mar 27, 2010, at 4:56 PM, faust 1111 wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> In what way i cat implement validation of uniqueness?
>>>>>>> User
>>>>>>>  email: unique
>>>>>>>  login:  unique
>>>>>>>
>>>>>>
>>>>>> You can only have 1 unique field per database. you implement it by
using it as a docid, like
>>>>>>
>>>>>> {
>>>>>> "_id" : "user:unique",
>>>>>>   ...
>>>>>> }
>>>>>>
>>>>>> Chris
>>>>
>>>>
>>>
>>
>>
>>
>> --
>> --
>> Andrew Melo
>>
>



-- 
--
Andrew Melo

Mime
View raw message