जब भी मेरे रीयलटाइम फायरबेस डेटाबेस में कोई नया खाता बनाया गया है, तो यह जांचने के लिए मैं फ़ायरबेस .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() फ़ंक्शन क्योंकि इससे मुझे लगातार यह जांचने की अनुमति मिलेगी कि किसी ने डेटाबेस में नया खाता बनाया है या नहीं। क्या किसी के पास कोई विचार है कि मैं एक ही चीज़ को प्राप्त करने के लिए एक और दृष्टिकोण का उपयोग कर सकता हूं?
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)
})
दस्तावेज़ों के सुझाव की तरह आप इसे पुन: उपयोग करने के लिए एक चर में रेफरी स्टोर कर सकते हैं।
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
});
यह पहले एक बार मान प्राप्त करता है और फिर आप उन्हें डिक्रिप्ट कर सकते हैं, जब मान बदलते हैं। फ़ंक्शन को फिर से निकाल दिया जाएगा।
धर्मराज की सहायता से मुझे जो उत्तर मिला वह यह था कि आप बस यह कर सकते हैं:
database.ref("users/").on("value", (snapshot) => {
decryptAccounts(snapshot.val());
});
यह हर बार डेटाबेस से मान प्राप्त करेगा और उन्हें डिक्रिप्ट करेगा।
decryptAccounts()
हर बार चलना चाहिएon()
ट्रिगर और नए अपडेट देता है, है ना? या केवल एक बार?