簡體   English   中英

MongooseJS - 限制子文檔中的文檔數

[英]MongooseJS - limit number of documents in subdocument

我想知道是否有辦法限制(子)文檔中的元素數量。 在我的應用程序中,可以使用ajax將元素添加到子文檔中,因此重要的是我要防止惡意用戶添加一些荒謬的條目。

我可以想到一種方法,即查詢父文檔,檢查子文檔中的元素數量,如果它小於X,保存它。 然而,這需要查詢整個文檔,只是為了更新一點。 我寧願更喜歡使用update(),而不是findOne()和save()。 有辦法嗎?

編輯:在更新之前可以在沒有數據庫查找的情況下完成。 我不知道是否可以使用一個subdoc,我用一個普通的對象做了。 只需將數據存儲在數組中或更好地存儲為經典對象。 然后在更新之前,驗證密鑰號碼,如果密鑰號碼大於允許值 - 忽略它。 如果處理對象,請先檢查密鑰是否為數字。

您可以使用自定義validate函數在Mongoose中創建數組限制,例如:

validate: [v => v.length <= MAX, 'message']

其中MAX是一些最大數量的元素, 'message'是驗證失敗時顯示的消息。 看到:

http://mongoosejs.com/docs/api.html#schematype_SchemaType-validate

但是如果數組太長,你就無法為MongoDB提出一個失敗的請求,因為MongoDB沒有模式的概念,而且需要做你想做的事情。 模式僅存在於Mongoose中。

因此,如果您想直接使用MongoDB,那么不僅您無法在一個請求中執行它,實際上情況要差得多 - 您也無法消除競爭條件,因為MongoDB不支持事務,因此您無法保證永遠不會超過你的限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM