java - ServerTimestamp हमेशा Firebase Firestore पर शून्य है




android google-cloud-firestore (2)

मैं फायरबेस फायरस्टार के साथ एक एंड्रॉइड क्लाइंट में टाइमस्टैम्प क्षेत्र को जोड़ने की कोशिश कर रहा हूं।

documentation अनुसार:

सर्वर टाइमस्टैम्प से पॉप्युलेट होने के लिए डेट फील्ड को चिह्नित करने के लिए एनोटेशन का उपयोग किया जाता है। यदि एक POJO लिखा जा रहा है, तो एक @ ServerTimestamp-annotated फ़ील्ड के लिए रिक्त है, इसे सर्वर-जनरेट किए गए टाइमस्टैम्प से बदला जाएगा।

लेकिन जब मैं यह कोशिश करता हूं:

@ServerTimestamp
Date serverTime = null; // I tried both java.util.Date and java.sql.Date

//...

Map<String, Object> msg = new HashMap<>();
// ... more data
msg.put("timestamp", serverTime);

क्लाउड फायरस्टार डेटाबेस पर यह फ़ील्ड हमेशा null


क्लाउड फायरस्टार डेटाबेस में समय और तारीख को जोड़ने का सही तरीका नहीं है। सबसे अच्छा अभ्यास एक मॉडल वर्ग है जिसमें आप एक एनोटेशन के साथ Date टू टाइप्टर की एक तारीख दर्ज कर सकते हैं। यह है कि आपका मॉडल वर्ग कैसा दिखना चाहिए:

import java.util.Date;

public class YourModelClass {
    @ServerTimestamp
    private Date date;

    YourModelClass() {}

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}

जब आप YourModelClass वर्ग की वस्तु बनाते हैं, तो तिथि निर्धारित करने की कोई आवश्यकता नहीं है। Firebase सर्वर आपके date फ़ील्ड को ServerTimestamp क्योंकि यह एक ServerTimestamp (एनोटेशन देखें) है, और यह पॉप्युलेट करेगा जो तदनुसार सर्वर टाइमस्टैम्प के साथ दायर किया गया है।

एक और तरीका इस तरह से FieldValue.serverTimestamp() पद्धति का उपयोग करना होगा:

Map<String, Object> map = new HashMap<>();
map.put("date", FieldValue.serverTimestamp());
docRef.update(map).addOnCompleteListener(new OnCompleteListener<Void>() {/* ... */}

मुझे भी इसी तरह की समस्या है, और मैंने इसे अपने कैटॉग पर पाया और अपनी समस्या को हल किया

firebaseFirestore = FirebaseFirestore.getInstance();
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
                .setTimestampsInSnapshotsEnabled(true)
                .build();
firebaseFirestore.setFirestoreSettings(settings);




google-cloud-firestore