我有一個註冊頁面,要求用戶輸入用戶名和電子郵件地址。如何檢查CouchDB中的可用性和預留用戶名
我需要檢查用戶名+電子郵件是否可用。如何做到這一點只需一個HTTP請求?
順便說一句,用戶名被用作docID。
我現在正在做的是檢查是否存在docID,然後使用視圖來檢查電子郵件地址的可用性,但這是2個HTTP請求。
我曾考慮過使用視圖發送[用戶名,電子郵件]作爲密鑰,並用「鍵」參數= [用戶名,電子郵件]查詢視圖。但是,如果用戶名和電子郵件屬於不同的現有用戶,則這不起作用。
我有一個註冊頁面,要求用戶輸入用戶名和電子郵件地址。如何檢查CouchDB中的可用性和預留用戶名
我需要檢查用戶名+電子郵件是否可用。如何做到這一點只需一個HTTP請求?
順便說一句,用戶名被用作docID。
我現在正在做的是檢查是否存在docID,然後使用視圖來檢查電子郵件地址的可用性,但這是2個HTTP請求。
我曾考慮過使用視圖發送[用戶名,電子郵件]作爲密鑰,並用「鍵」參數= [用戶名,電子郵件]查詢視圖。但是,如果用戶名和電子郵件屬於不同的現有用戶,則這不起作用。
Jason。然而,正如你所說,山姆的解決方案非常有用,它可能不適合你。我可以想到另外兩種選擇。
假裝你回到SQL中。什麼是用戶的主要關鍵?它既不是用戶名,也不是電子郵件,而是兩列。相同的CouchDB。
所以,以絕對保證的唯一性,答案很簡單:它必須是文檔_id
。例如,對於用戶「傑森」用電子郵件「[email protected]」,發佈此文檔:
{ "_id": "jason:[email protected]",
"other stuff": "blah blah blah"
}
這是一個原子,交易,用戶創建。它可以:
_rev
財產。太好了,那個用戶/郵件組合已經被使用了!當然,簡單地檢查如果名稱是可用的,你可以GET /db/jason:[email protected]
。 (你可以像_users
數據庫那樣加上id前綴,比如users:jason:[email protected]
—這取決於你。)然後你可以在POST
之後回來。在此期間有可能會被採取,但這在所有「先檢查,後期保留」的表單中是正常的,這些表單現在在網絡上很常見。
第二個想法更多的是仔細考慮你的情況。你說兩個用戶可以使用相同的用戶名和電子郵件。這聽起來很奇怪。也許我讀錯了。這裏有一些事情要考慮:
P.S.你真的擁有[email protected]嗎?幸運的混蛋! :p – JasonSmith 2010-07-07 04:22:21
我對回答這樣一個古老的問題表示歉意,但我面臨同樣的問題。 「爲什麼不製作實際的登錄名呢?這對Facebook來說足夠了。」 1)Facebook不這樣做。 Facebook使用唯一的數字ID,其中包含電子郵件地址,姓名,暱稱*和*與其關聯的用戶名。 2)電子郵件地址經常改變。 – Flimzy 2015-08-29 23:15:34
你可以通過你的網址與
http://localhost:5984/yourdatabase/_design/viewname/_view/viewid?key=["username","password"]
如果相同的用戶名和密碼,你的文檔中存在,將返回的數據。
[couchdb中的唯一約束]的可能的重複(http://stackoverflow.com/questions/1541239/unique-constraints-in-couchdb) – Flimzy 2015-08-29 23:18:04