2017-10-29 23 views
6

मुझे तिथि सीमा के साथ लंबे संग्रह की क्वेरी करने में सहायता चाहिए। नीचे उदाहरण दस्तावेज़ देखें। मैं दिनांक सीमा का उपयोग कर स्टार्टटाइम फ़ील्ड से पूछताछ करना चाहता हूं।फायरस्टोर क्वेरी तिथि सीमा

enter image description here

enter image description here

उत्तर

6

आप (1 जनवरी 1970 के बाद से सेकंड) Unix time के रूप में datetime वस्तु संग्रहीत कर सकती है। तो फिर तुम सरल उपयोग जहां इस तरह का चयन कर सकते हैं: Btw

collectionRef.where("startTime", ">=", "1506816000").where("startTime", "<=", "1507593600")

- अपने ऐप्लिकेशन में यूनिक्स समय के लिए दिनांक से कन्वर्ट करने के लिए, आप उत्कृष्ट पुस्तकालय moment आप js या नोड के साथ कुछ निर्माण कर रहे हैं, तो उपयोग कर सकते हैं ()।

+0

धन्यवाद, लेकिन मैं पहले से ही बस संलग्न स्क्रीनशॉट –

+0

ठीक तरह दिनांक स्वरूप के साथ डेटा है। फायरबेज डेटाटाइम के अनुसार फायरस्टोर में एक समर्थित डेटा प्रकार है। क्या स्टार्टटाइम एक स्ट्रिंग या डेटाटाइम ऑब्जेक्ट है? – DauleDK

+0

यह डेटटाइम ऑब्जेक्ट है यह स्ट्रिंग नहीं है –

7

जब से मैं 'DUEDATE' फ़ील्ड टाइमस्टैम्प के रूप में बादल firestore पर (और नहीं स्ट्रिंग या संख्या के रूप में) संग्रहीत है, मैं ऐसा किया 2017 पर एक नियत तारीख के साथ चालान दस्तावेजों प्राप्त करने के लिए:

 let start = new Date('2017-01-01'); 
     let end = new Date('2018-01-01'); 

     this.afs.collection('invoices', ref => ref 
      .where('dueDate', '>', start) 
      .where('dueDate', '<', end) 
     ); 

नोट: देय फ़ील्ड को डेटबेस() ऑब्जेक्ट के साथ फायरबेस में संग्रहीत किया गया था। उदाहरण के लिए: this.doc.dueDate = new Date('2017-12-25')

+0

यदि आप अपने फायरस्टोर का स्क्रीनशॉट लेते हैं, तो क्या यह वहां से संभव है डेटाटाइम ऑब्जेक्ट या स्ट्रिंग के बीच अंतर को स्पष्ट रूप से बताने के लिए? – DauleDK

+0

हां @ डौलेडीके देखो: https://imgur.com/a/draQo तीसरा क्षेत्र दिनांक() जेएस ऑब्जेक्ट से भरा था और इसे टाइमस्टैम्प के रूप में संग्रहीत किया गया था (फायरबेस ने कनवर्ट किया)। और छवि पर आप यूटीसी के रूप में स्वरूपित इस टाइमस्टैम्प को देखेंगे लेकिन मैंने इसे डेट ऑब्जेक्ट के रूप में सहेजा है। और अंततः यह जांचने के लिए कि क्या यह वास्तव में एक टाइमस्टैम्प फ़ील्ड है, बस मैदान को होवर करें। मेरे मामले में मैं "मार्का डी tiempo" देखता हूं जिसका अर्थ है "टाइमस्टैम्प"। – Capy

+1

वाह जो कमाल है - कुछ ऐसा जो निश्चित रूप से फायरस्टोर क्वेरी दस्तावेज़ में जोड़ा जाना चाहिए। मुझे यह एहसास है कि हम फायरबेस-फायरस्टोर कंसोल में कई अपडेट देखेंगे। "मार्से डी tiempo" - आज सबसे मूल्यवान सबक सीखा, gracias;) – DauleDK

2

समाधान Date.now() का उपयोग करने के लिए है, firebase से टाइमस्टैम्प सेवा का उपयोग कर बंद करो, तुम जैसे मिलीसेकेंड में समय के संख्यात्मक मान के साथ काम करने की जरूरत है, उदाहरण के लिए: 1514271367000, बजाय अगर firestore का उपयोग करता है 26/12/2017 1:56:07 GMT-0500 (-05) काम नहीं करेगा। एक प्रश्न का एक उदाहरण है:

this.fsService.afs.collection('chats/4bY1ZpOr1TPq8bFQ3bjS/finance/123+finance/12345' 
 
     , ref => ref.orderBy('hour').startAt(1514184967000).endAt(1514271367000)) 
 
     .valueChanges().subscribe(data =>{ 
 
     this.mensajes = data; 
 
     })

+0

क्या यह ठीक है अगर फायरस्टोर दिनांक डेटा के रूप में दिनांक .now() बचाता है?मुझे लगता है कि कुछ मामलों में तारीख की समझ बेहतर है और समझने की आसानी है। – Telion

संबंधित मुद्दे