3
我需要維護一個集合'用戶'[用戶]文檔,用於實現我的網站的身份驗證機制。文檔使用Node.js/MongooseJs的MongoDb集合中的多態性 -
[用戶]〜{顏色:字符串,用戶名:串,密碼哈希:串,密碼鹽:串}
此外,每個[用戶]可以是3種顏色之一 - [RedUser],[BlueUser]和[GreenUser]並且將根據顏色具有不同的架構。所有從[用戶]架構延伸:
[RedUser] ~ Union([User], {redfield:string})
[GreenUser] ~ Union([User], {greenfield:boolean})
[BlueUser] ~ Union([User], {bluefield:number})
例如一個綠色的用戶 - {顏色:'綠色',用戶名:'鮑勃',密碼哈希:'1313a ...',密碼鹽:'...'}
對於身份驗證我想查詢'用戶使用一般的[用戶]模式收集,因爲我需要知道的只有密碼哈希。
不過,我想一個函數如下(僞代碼):
Authenticate(username, password)
userDoc <- users.findOne({username:username})
if badPassword(usersDoc.password-hash,password) throw error
else
if userDoc.color=='red'
return recast(userDoc, RedUser)
if userDoc.color=='green'
return recast(userDoc, BlueUser)
if userDoc.color=='blue'
return recast(userDoc, GreenUser)
所以,我怎麼能做到從[用戶]文檔上鑄造到[RedUser]例如?
我如何使用Node.js/MongooseJs/CoffeeScript的
的感謝!