ฉันสามารถค้นหาค่าเอกสารที่ซ้อนกันใน firestore ได้หรือไม่

ฉันต้องการค้นหาข้อมูลต่อไปนี้ใน firestore: Collection->Document->{date{month:10,year:2017}}

var ref = db.collection(collection).doc(document)
ref.where('date.month', '==', 10).get().then(doc=>{
    if (!doc.exists) {
        console.log('No such document!');
    } else {
        console.log('Document data:', doc.data());
    }
}).catch(err => {
    console.log('Error getting document', err);
});

รหัสเทียมข้างต้นใช้งานไม่ได้ มีข้อเสนอแนะอะไรบ้าง?


person Greg    schedule 11.10.2017    source แหล่งที่มา


คำตอบ (1)


ดูเหมือนว่าคุณกำลังสอบถามเอกสาร:

var ref = db.collection(collection).doc(document)

คุณควรค้นหา คอลเลกชัน แทน : :

var ref = db.collection(collection)

ข้อความค้นหาของคุณจะดึงเอกสารทั้งหมดซึ่งตรงตามเกณฑ์ "date.month==10" จากอาร์เรย์ของเอกสารในคอลเลกชันของคุณ

ฉันคิดว่าคุณต้องเปลี่ยนวิธีแยกวิเคราะห์ข้อมูลที่มาจาก .get() เพราะมันจะเป็นอาร์เรย์:

.then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
            console.log(doc.id, " => ", doc.data());
        });
    })

ลิงก์นี้น่าจะมีประโยชน์เช่นกัน เพื่อให้ได้แนวคิด

person Evgeny Vostok    schedule 11.10.2017