これを行うには2つの方法がありますが、私は以下の両方を概説しています。
1)ループバック全文検索では、正規表現検索を行うカスタムリモートメソッドが必要です。
https://loopback.io/doc/en/lb3/Where-filter.html
正規表現のセクションへのジャンプ。
これは、LBでテキスト検索を行うための最良の方法でした。
これはこれは、API側で次の形式のフィルタを生成し、私のフィルタ
const AdminFilter = (props) => {
return (<Filter {...props}>
<TextInput label="Name Or Email" source="userNameOrEmailId" alwaysOn />
</Filter>)
}
です。
const findUsersByNameOrEmail = (filter) => {
const regex = '^' + filter.where.userNameOrEmailId
filter.where.or = [{name: {'regexp': regex}}, {email: {'regexp': regex}}]
delete filter.where.userNameOrEmailId
return findAllUsersByFilter(filter)
}
const findAllUsersByFilter = (filter) => {
return AppUser.find(filter)
}
ここで私はちょっとハッキーですが、上記のuserNameOrEmailのようなフィルタにダミーソースを割り当てると思います。それは実際にはデフォルトの懸念をオーバーライドしていません。適切なフィルタを設定するのに役立ちます。
2)カスタムRest Wrapperまたは自分自身のRest Clientで上記の関数findUsersByNameOrEmailによって行われているフィルタ構築のようなことを行うことで、同じことを達成することもできます。あなたの残りのクライアントやラッパーには以下のようなものがあります。
if (type === 'GET_LIST' && resource === 'appUser') {
const regex = '^' + params.userNameOrEmailId
const url = `URLroot/filter={where: [or: {name: {'regexp': regex}}, {email: {'regexp': regex}}]
options.method = 'GET';
return handleRequestAndResponse(url, options)
}
あなたのAPIへの呼び出しをインターセプトし、必要に応じて事前に修正することです。
しかし、どのように私は、管理者・オン・残りの部分と正規表現を使用することができますか? –
Admin Restでは唯一の仕事は文字列をAPIに渡すことです。そのカスタム文字列を取得してRegexSearchに渡すのは、カスタムのRemote Methodの仕事です。私の答えをいくつかの詳細で編集します。 –
ちょうど私はちょうど上で概説したテキスト/ IDベースの正規表現検索とアプローチ2を実装しなければなりませんでした。遠隔の方法にしたくない場合は、それを試すこともできます。 –