私はmongodbを使用しており、次のクエリを作成するためにビルドしました。
1 AccessToken.where('resource_owner_id').equals(event.resource_owner_id)
2 .where('revoked_at').equals(undefined)
3 .or([ { scopes: /resources/i }, { scopes: new RegExp(event.resource,'i') } ])
4 .or([ { device_ids: [] }, { device_ids: event.body.id } ])
この例では、Mongooseとcoffescriptを使用しています。
or
残念ながら、主にステートメントの場合、それは私が望むようには機能しません。私が欲しいのは、or
3行目と4行目の2つが独立していることです。
つまり、フィールドscopes
(行3)には文字列resources
またはevent.resourceに格納されている文字列が含まれているdevice_ids
必要がありますが、フィールドは空であるかIDが含まれている必要がありますevent.body.id
。
私が準備したテストから、or
コマンドがすべてまとめられていることがわかります。これは、4つまたは条件の1つだけが満たされたときに、ドキュメントを取得することを意味します。
- { scopes: /resources/i }
- { scopes: new RegExp(event.resource,'i') }
- { device_ids: [] }
- { device_ids: event.body.id }
私が到達できないのは、フィールドscopes
に関連する条件とフィールドに関連する条件の両方device_ids
を満たすことができるように、それらを2つのグループに分割することです。
問題がよく説明されていることを願っています。ありがとう。