2017-03-20 6 views
2

(サブ)文書内の要素の数を制限する方法があるのだろうかと思います。私のアプリでは、要素をajaxでサブ文書に追加することができます。そのため、悪意のあるユーザーによるばかげた数のエントリの追加を防ぎます。MongooseJS - サブ文書内の文書の数を制限する

私は、親文書を照会し、サブ文書内の要素の数をチェックし、Xより小さい場合はそれを保存するという方法が考えられます。ただし、ドキュメント全体を照会する必要があります。ちょっとしたことを更新するだけです。私はfindOne()とsave()の代わりにupdate()を使ってすべてをやりたいと思っています。方法はありますか?

編集:更新する前にdbルックアップなしで行うことができます。私はそれがsubdocとすることが可能かどうかわからない、私はそれを普通のオブジェクトでやった。データを配列に保存するか、古典的なオブジェクトを保存するだけです。更新する前に、キー番号が許可より大きい場合はキー番号を検証します - 無視します。オブジェクトを扱う場合は、キーが最初の番号かどうかを確認します。

答えて

1

次のようなもので、カスタムvalidate機能を使用して、マングースの配列の制限を行うことができます。MAXは、要素のいくつかの最大数であり、'message'で検証エラーに表示するメッセージです

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

。参照:

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

しかし、あなたは、配列が長すぎるのMongoDBは、スキーマの概念がないし、それはあなたが欲しいものを行うために必要なことになるためであれば失敗するでしょうMongoDBのための一つのリクエストをすることはできません。スキーマはMongooseにのみ存在します。

MongoDBを直接使用したい場合は、1回のリクエストでそれを行うことができないだけでなく、実際にはそれよりも悪くなります.MongoDBはトランザクションをサポートしていないため、あなたは本当にあなたの限界が決して超えられないことを保証することはできません。

+0

私は完全に理解していません。子スキーマchildSchemaを持ち、親が{someVariable:String、child:{type:[childSchema]、validate:{...}}}のようであるとしましょう。 –

+0

これは私が思ったように動作します、ありがとうございます。 –

関連する問題