私は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残念ながら、主にステートメントの場合、それは私が望むようには機能しません。私が欲しいのは、or3行目と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つのグループに分割することです。
問題がよく説明されていることを願っています。ありがとう。