Firestore js sdkで特定のフィールドの変更を聞くにはどうすればよいですか?
ドキュメントでは、ドキュメント全体をリッスンする方法のみを示しているようです。「SF」フィールドのいずれかが変更されると、コールバックがトリガーされます。
db.collection("cities").doc("SF")
.onSnapshot(function(doc) {
console.log("Current data: ", doc && doc.data());
});
できません。 Firestoreでのすべての操作はドキュメント全体に対して行われます。
これは Cloud Functions Firestore triggers にも当てはまります(何らかの方法で変更されたドキュメント全体のみを受信できます)。
ドキュメントから取得するデータの範囲を絞り込む必要がある場合は、サブコレクション内のドキュメントに配置し、そのドキュメントを個別にクエリします。
一部のフィールドのイベントを無視する場合に備えて、次のようなことができます。
export const yourCloudFunction = functions.firestore
.document('/your-path')
.onUpdate(
field('foo', 'REMOVED', (change, context) => {
console.log('Will get here only if foo was removed');
// ... Your implementation here
}),
);
field
関数の要点を作成しました here 。 を覚えておいてください、他のフィールドで変更が発生した場合、関数の実行を回避していません、それをあなたに処理せず、代わりに解決された約束を返します。
ドキュメントを聞いてから、興味のあるフィールドに条件を設定します。
_firebase.firestore().collection('Dictionaries').doc('Spanish').collection('Words').doc(Word).collection('Pronunciations').doc('Castilian-female-IBM').onSnapshot(function(snapshot) {
if (snapshot.data().audioFiles) { // eliminates an error message
if (snapshot.data().audioFiles.length === 2) {
audioFilesReady++;
if (audioFilesReady === 3) {
$scope.showNextWord();
}
}
}
}, function(error) {
console.error(error);
});
_
webm
および_Castilian-female-IBM
_形式の音声ファイルの配列を含む音声(_mp3
_)のドキュメントを聞いています。これらのオーディオファイルの両方が非同期に戻ってきたら、snapshot.data().audioFiles.length === 2
。これにより、条件がインクリメントされます。さらに2つの音声が戻ってくると(_Castilian-male-IBM
_と_Latin_American-female-IBM
_)、_audioFilesReady === 3
_と次の関数$scope.showNextWord()
が起動します。