2014-07-06 31 views
4

我正在構建一個應用程序,該應用程序使用移動設備UID作爲驗證每個父級模型的會話的方法之一。我作爲用戶的意圖可以通過多個父母的身份驗證,但每個父母只能在數據庫中擁有一個會話條目。Mongoose JS子文檔獨特驗證

ParentSchema { 
    sessions: [{ 
    device_uid: { type: String, unique: true } 
    }] 
} 

會話是它自己的模式對象(爲簡單起見,內聯寫入)。

我的問題是:如果我把唯一驗證的device_uid,驗證的上下文是IT的父母或ALL會話子文檔的所有父母的子文檔?

回答

2

sessions陣列的子文檔中的device_uid上的唯一索引確保沒有兩個文檔可以具有相同的device_uidsessions陣列元素。不過,still allow這兩個元素在相同的文件中具有相同的device_uid

+1

有趣。所以即使子文檔是它自己的模式,唯一的驗證仍然是在最頂層的父模式​​或文檔的上下文中? – tommybananas

+1

@ snowman4415正確。 Mongoose索引總是使用集合上定義的MongoDB索引來實現。 – JohnnyHK