2012-11-22 11 views
0

我在這裏有兩個文件。mongooseJs中有關MongoDb模式的混淆。如何改進?

var UserSchema = new Schema({ 
     username: { 
      type: String, 
      validate: [required,"Username is required"], 
      index: {unique: true} 
     }, 
     email: { 
      type: mongoose.SchemaTypes.Email, 
      validate: [required, 'Email required'], 
      index: { unique: true } 
     }, 
     password: { 
      type: String, 
      validate: [required, 'Password required'], 
     }, 
     socialauth:{ 
      type:[] 
     }, 

     createdAt: { 
      type: Date, 
      'default': Date.now 
     } 
    }); 

UserTwitterSchema:

var UserTrwitterSchema = new Schema({ 

    authToken: { 
     type: String, 
     validate: [required,"authToken is required"], 
     index: {unique: true} 
    }, 

    authSecret: { 
     type: String, 
     validate: [required,"authSecret is required"], 
     index: {unique: true} 
    }, 
    apiKey: { 
     type: String, 
     validate: [required, 'Api Key is required'], 
    }, 
}); 

我在這裏的困惑是: 嗯,我應該使用apiKey或代替該做user :ObjectId,。用戶將是這裏的外鍵。或者兩個都做?在查詢數據時,什麼費用最低? 我已經在這裏使用了apiKey,並且完成了我所有其他模式的工作。只是想要第二個意見,因爲這與我創建關係數據庫完全不同。

+0

什麼樣的查詢你在幹什麼?另外,UserTwitter是一個單獨的文件給用戶? – Alex

+0

是的,一個單獨的文件。 – Hick

+1

你在做什麼類型的查詢? – Alex

回答

0

如果你打算接受其他憑證的用戶,我不會創建一個speparate嘰嘰喳喳架構(Facebook的....)

相反,我將創建一個配置文件與集合類型和憑據作爲唯一的鍵和存儲用戶數據(年齡,生物等)在用戶選舉。

profile = { 
_id : {type : "email", username : "Justin"}, 
creds : {email : "[email protected]", pw : "hash"), 
user_id : ObjectId(xys) 
} 

profile2 = { 
_id : {type : "twitter", username : "JustinBieber"}, 
creds : {token : "fatoken", secret : "hash" , key : "key"), 
user_id : ObjectId(xys) 

}

和用戶的樣子:

user = { 
_id : ObjectId(xys), 
bio : "really young guy", 
born : date(March 1, 1994) 
... 
}