で始まる特定の文字列であるすべてのドキュメントを取得するために、firestoreコレクションを照会することは可能ですか?
ドキュメントを調べましたが、これに適したクエリが見つかりません。
ギル・ギルバートの回答と同じ。単なる拡張機能といくつかのサンプルコード。 String.fromCharCode および String.charCodeAt を使用します
var strSearch = "start with text here";
var strlength = strSearch.length;
var strFrontCode = strSearch.slice(0, strlength-1);
var strEndCode = strSearch.slice(strlength-1, strSearch.length);
var startcode = strSearch;
var endcode= strFrontCode + String.fromCharCode(strEndCode.charCodeAt(0) + 1);
次に、以下のようなコードをフィルタリングします。
db.collection(c)
.where('foo', '>=', startcode)
.where('foo', '<', endcode);
すべての言語とユニコードで動作します。
警告:firestoreの検索条件はすべて大文字と小文字が区別されます。
const text = 'start with text here';
const end = text.replace(/.$/, c => String.fromCharCode(c.charCodeAt(0) + 1));
query
.where('stringField', '>=', text)
.where('stringField', '<', end);
async function search(startsWith = '') {
let query = firestore.collection(COLLECTION.CLIENTS);
if (startsWith) {
const end = startsWith.replace(
/.$/, c => String.fromCharCode(c.charCodeAt(0) + 1),
);
query = query
.where('firstName', '>=', startsWith)
.where('firstName', '<', end);
}
const result = await query
.orderBy('firstName')
.get();
return result;
}