जब भी मेरे रीयलटाइम फायरबेस डेटाबेस में कोई नया खाता बनाया गया है, तो यह जांचने के लिए मैं फ़ायरबेस .on() विधि का उपयोग करने का प्रयास कर रहा हूं। अब चूंकि मैं इस डेटा को फ़ायरबेस डेटाबेस में एन्क्रिप्ट कर रहा हूं, इसलिए मैं पहली बार फ़ायरबेस से डेटा को मेरे द्वारा बनाए गए फ़ंक्शन का उपयोग करके इसे डिक्रिप्ट करने के लिए लोड करना चाहता हूं। क्या यह संभव है कि मैं एक वादे की तरह कुछ कर सकता हूं जो मुझे एक बार फ़ायरबेस द्वारा मेरे चर में सभी डेटा लोड करने के बाद ऐसा करने की अनुमति देगा?

var users2 = database.ref("users/").on("value", (snapshot) => {
      const usersLst = snapshot.val();
      users = usersLst
});

मैं कुछ इस तरह जोड़ना चाहूंगा:

var users2 = database.ref("users/").on("value", (snapshot) => {
      const usersLst = snapshot.val();
      users = usersLst
}).then(() => {
      console.log(decryptAccounts(users))
});

एक महत्वपूर्ण चीज जो मैं रखना चाहता हूं वह है .on() फ़ंक्शन क्योंकि इससे मुझे लगातार यह जांचने की अनुमति मिलेगी कि किसी ने डेटाबेस में नया खाता बनाया है या नहीं। क्या किसी के पास कोई विचार है कि मैं एक ही चीज़ को प्राप्त करने के लिए एक और दृष्टिकोण का उपयोग कर सकता हूं?

0
Makisa9999 26 जिंदा 2022, 21:07
decryptAccounts() हर बार चलना चाहिए on() ट्रिगर और नए अपडेट देता है, है ना? या केवल एक बार?
 – 
Dharmaraj
26 जिंदा 2022, 21:17
हाँ decryptAccounts() हर बार चलना चाहिए ताकि मैं नए खातों को भी डिक्रिप्ट कर सकूं।
 – 
Makisa9999
26 जिंदा 2022, 21:34

3 जवाब

सबसे बढ़िया उत्तर

आप केवल decryptAccounts() फ़ंक्शन को on() के अंदर जोड़ सकते हैं ताकि हर बार कोई अपडेट प्राप्त होने पर, आप उस डेटा पर उस फ़ंक्शन को चला सकें।

var users2 = database.ref("users/").on("value", (snapshot) => {
      const usersLst = snapshot.val();
      
      // runs on new value fetched after every update
      decryptAccounts(usersLst)
})
0
Dharmaraj 26 जिंदा 2022, 21:40
यदि मैं आपके समाधान का उपयोग करता हूं तो मैं जिस समस्या का सामना कर रहा हूं, वह यह है कि यदि पहले डिक्रिप्शन के बाद डेटाबेस के साथ कोई अपडेट होता है, तो प्रोग्राम पहले से ही डिक्रिप्ट की गई जानकारी को डिक्रिप्ट कर देगा, इसलिए यह ईमेल पते और पासवर्ड को एक खाली स्थान से बदल देगा। डोरी। क्या आप इस समस्या का कोई समाधान सोच सकते हैं?
 – 
Makisa9999
26 जिंदा 2022, 21:57

दस्तावेज़ों के सुझाव की तरह आप इसे पुन: उपयोग करने के लिए एक चर में रेफरी स्टोर कर सकते हैं।

const databaseRef = database.ref("users/");
// use databaseRef.get() with the correct path to your attribute you want to get
// Runs only once
databaseRef.get().then((snapshot) => {
  // Decrypt function
});
// Listens to changes
var users2 = databaseRef .on("value", (snapshot) => {
      const usersLst = snapshot.val();
      users = usersLst
});

यह पहले एक बार मान प्राप्त करता है और फिर आप उन्हें डिक्रिप्ट कर सकते हैं, जब मान बदलते हैं। फ़ंक्शन को फिर से निकाल दिया जाएगा।

0
Casper Kuethe 26 जिंदा 2022, 21:21

धर्मराज की सहायता से मुझे जो उत्तर मिला वह यह था कि आप बस यह कर सकते हैं:

database.ref("users/").on("value", (snapshot) => {
    decryptAccounts(snapshot.val());
});

यह हर बार डेटाबेस से मान प्राप्त करेगा और उन्हें डिक्रिप्ट करेगा।

0
Makisa9999 26 जिंदा 2022, 23:23