JSのClient SDK v7.21.0で、ついにFirestoreに ノットイコール !=
クエリが来ました🎉🎉🎉 他のSDKにも来るのが楽しみですね!他にも not-in
クエリが来ています!
v7.21.0 of @Firebase JavaScript client for Web / Node.js is available. Release notes: https://t.co/VyOe9cYsYA
— Firebase Release (@FirebaseRelease) September 18, 2020
ひとまず!=
がどんな動きになるのか気になったので早速試してみました。
import * as firebase from 'firebase'
import 'firebase/firestore'
firebase.initializeApp({
// your config
})
// 事前にこのデータをFirestoreのusers配下に作成しておく
const list = [
{ name: '1', status: 'a' },
{ name: '2', status: 'b' },
{ name: '3', status: 'c' },
{ name: '4', status: null },
{ name: '5', },
]
const db = firebase.firestore()
const usersRef = db.collection('users')
const result1 = await usersRef.where('status', '!=', 'a').get()
// statusに値が設定されている(nullを除く)ドキュメントの中で、status != aのものが取得される
// result1 = [
// {
// "name": "2",
// "status": "b"
// },
// {
// "name": "3",
// "status": "c"
// }
// ]
const result2 = await usersRef.where('status', '!=', null).get()
// statusに値が設定されているドキュメントが取得される
// result2 = [
// {
// "name": "1",
// "status": "a"
// },
// {
// "name": "2",
// "status": "b"
// },
// {
// "name": "3",
// "status": "c"
// }
// ]
const result3 = await usersRef.where('status', '!=', undefined).get()
// thrown FirebaseError: Function Query.where() requires a valid third argument, but it was undefined.
whereで指定したフィールドがnullやそもそも存在しないドキュメントの取り扱いは、もしかしたら想定とはズレるかもしれません。特に元々フィールドが存在しない場合(この例で言うname: 5
のもの)は、当然ながらwhereでは取ってくることができないようです。ReleaseNotesに書いてあるとおりでしたね。
!= finds documents where a specified field's value does not equal the specified value. Neither query operator will match documents where the specified field is not present.
よかったらTwitterも見ていってください〜FirebaseやFlutterをはじめとして、サービス開発全般のことをつぶやいてます👇
ついにFirestoreに != クエリが来たので検証してみた https://t.co/GcpOR2Gz9P #Qiita
— moga🍳 (@_mogaming) September 19, 2020
よかったらLGTMしてくれよな!