[Firebase]クエリでendAt使用例

クエリでendAt使用例

            const today = new Date();
            const yyyy = today.getFullYear();
            let mm = today.getMonth() + 1;
            let dd = today.getDate();
            const yyyymmdd = yyyy + "," + mm + "," + dd;
            var startDate = new Date(yyyymmdd);

            const tomorrow = new Date(today);
            tomorrow.setDate(tomorrow.getDate() + 1);

            const yyyyTomorrow = tomorrow.getFullYear();
            let mmTomorrow = tomorrow.getMonth() + 1;
            let ddTomorrow = tomorrow.getDate();
            const yyyymmddTomorrow = yyyyTomorrow + "," + mmTomorrow + "," + ddTomorrow;
            console.log('yyyymmddTomorrow:'+yyyymmddTomorrow);

            var endDate = new Date(yyyymmddTomorrow);
            console.log('endDate:'+endDate);
            
            firebase.firestore()
            .collectionGroup("samplecollection") 
            .orderBy("createdAt", "asc").startAt(startDate).endAt(endDate)
            .limit(10)
            .get()
            .then(querySnapshot => {
                querySnapshot.forEach(doc => {
                    console.log('success');
                }, (error) => {
                    console.log('error');
                });
            })

[Firebase]クエリでstartAt使用例

クエリでstartAt使用例

            const today = new Date();
            const yyyy = today.getFullYear();
            let mm = today.getMonth() + 1;
            let dd = today.getDate();
            const yyyymmdd = yyyy + "," + mm + "," + dd;
            var startDate = new Date(yyyymmdd);
            
            firebase.firestore()
            .collectionGroup("samplecollection") 
            .orderBy("createdAt", "asc").startAt(startDate)
            .limit(10)
            .get()
            .then(querySnapshot => {
                querySnapshot.forEach(doc => {
                    console.log('success');
                }, (error) => {
                    console.log('error');
                });
            })

[Firebase]コレクションまたはサブコレクションが存在するかどうかを確認

コレクションまたはサブコレクションが存在するかどうかを確認

subCollection2存在確認

const db = firebase.firestore();
const collection1 = db.collection('collection1');

var doc = collection1
.doc("docId1")
.collection('subCollection1')
.doc("subDocId1")
.collection('subCollection2')
.get()
.then(snapshot => {
    console.log(snapshot.docs.length);
    if(snapshot.docs.length > 0){
        console.log(snapshot.docs.length);
    }
    else{
        console.log(snapshot.docs.length);
    }


});

[Firebase]Firebaseのadd,update,setメソッドについて

Firebaseのadd,update,setメソッドについて

メソッド登録更新
add×
update×
set

■データ登録は、add、setどちらもできますが、その大きな違いは以下です。

・add : ドキュメントID自動発行する。

・set : ドキュメントID自動発行しない。

await firebase.firestore().collection('test').doc('dodumentId01').set({
  displayName: '山田太郎',
  dodumentId: 'dodumentId01'
})

■データ更新は、update、setどちらもできますが、その大きな違いは以下です。

・update : 指定したフィールドのみ更新する。

・set : 全てのフィル―ド更新する。

■使い分けの例

・set : 登録時使用する。

・update : 更新時使用する。

[Firebase]ドキュメント作成

ドキュメント作成

            //コピー元ドキュメント取得
            cont searchDoc;
            await firebase.firestore()
            .collection('testcolloya')
            .doc('testdocoya')
            .collection("testcoll")
            .where('testfield', '==', 'xxxxxxxxxxxxxxxxxxxx')
            .get()
            .then(snapshot => {
                snapshot.docs.forEach(doc => {
                    searchDoc = doc.data();
                });
            });

            //取得したドキュメントをコピーしてドキュメント作成
            let insertDoc = Object.assign({}, searchDoc);

            //ドキュメントのfield変更
            insertDoc.testfield = 'testfield';
            insertDoc.testfield2 = 'testfield2';

            //ドキュメント作成
            await firebase.firestore()
            .collection('testcolloya')
            .doc('testdocoya')
            .collection("testcoll")
            .add(insertDoc);

[Firebase]コレクションのドキュメント全件取得

コレクションのドキュメント全件取得

            //コレクションのドキュメント全件取得
            var docData = [];
            await firebase.firestore()
            .collection('testcolloya')
            .doc('testdocoya')
            .collection("testcoll")
            .get()
            .then((doc) => {
                if (doc.docs) {
                    doc.docs.map((d) => {
                        let data = d.data();
                        docData.push(data);
                    });
                }
                else{
                    console.log('none');
                }
            });

[Firebase]ドキュメントId取得

ドキュメントId取得

            //testfieldが該当の値のtestcollのドキュメントID取得
            const documentId;
            await firebase.firestore()
            .collection('testcolloya')
            .doc('testdocoya')
            .collection("testcoll")
            .where('testfield', '==', '1234xxxxxxxxxxxxx5678')
            .get()
            .then(snapshot => {
                snapshot.docs.forEach(doc => {
                    documentId = doc.id;
                });
            });

[Firebase]ドキュメント削除

ドキュメント削除

            //testfieldが該当の値のtestcollのドキュメントID取得
            const documentId;
            await firebase.firestore()
            .collection('testcolloya')
            .doc('testdocoya')
            .collection("testcoll")
            .where('testfield', '==', '1234xxxxxxxxxxxxx5678')
            .get()
            .then(snapshot => {
                snapshot.docs.forEach(doc => {
                    documentId = doc.id;
                });
            });

            //testcollのドキュメントIDのドキュメント削除
            try{
                await firebase.firestore()
                .collection('testcolloya')
                .doc('testdocoya')
                .collection("testcoll")
                .doc(documentId)
                .delete();
            }catch(e){
                console.log(e);
            }

[Firebase]Getting all documents from one collection in Firestore

Getting all documents from one collection in Firestore

            const events = await firebase.firestore().collection('users')
            events.get().then((querySnapshot) => {
                const tempDoc = []
                querySnapshot.forEach((doc) => {
                    var data = doc.data();
                    console.log(data);
                    tempDoc.push(data);
                })
                console.log(tempDoc);
            })