🙆
Firebase Functions にて、Undefinedがnullと認識してくれないけど、nullなんだよね。
firebase functions を使用している際に必ず遭遇した内容であるだろう
undefined
について話します。
こいつ、nullなんだけど、nullじゃないっぽい。
例えば、下記のような作成時にトリガーを発火させる関数があったとして、
exports.chatCreated = functions
.region("asia-northeast1")
.firestore.document('chat_rooms/{chatRoomId}')
.onCreate(async (snap, context) => {
const obakeTestId = snap.data()['obakeId'];
})
例えば、obakeIdみたいな変数がmapで格納されていない場合、
変数名:obakeTestId
こいつに入るのは、undefinedなんです。
で、こいつをどっかのmapとかに突っ込んだとしたら、エラーが返ってくるんですよね。こんな感じで↓
const obakeTestId = snap.data()['obakeId'];
const map = {
'obakeId': obakeTestId,
}
Error: Update() requires either a single JavaScript object or an alternating list of field/value pairs that can be followed by an optional precondition. Value for argument "dataOrField" is not a valid Firestore value. Cannot use "undefined" as a Firestore value (found in field "obakeId"). If you want to ignore undefined values, enable
ignoreUndefinedProperties
.
found in field "obakeId"
多分こいつが重要で、obakeIdなんてねーぞ。だから使うなよみたいな感じのイメージ感。
でも、謎に下記はtrueが返ってくる
const obakeTestId = snap.data()['obakeId'];
console.log(obakeTestId == null) // ← trueが返る
フッシギー。使えないのに使えるという。
Discussion