मैं लेनदेन वादा वापस करता हूं जो फ़ंक्शन को रोकने से पहले लेनदेन के समाप्त होने की प्रतीक्षा करनी चाहिए। लेनदेन ठीक निष्पादित करता है, लेकिन वादा कभी हल नहीं होता है।फायरबेस के लिए क्लाउड फ़ंक्शंस ऑन्राइट टाइमआउट
मैं फ़ायरबेस कंसोल में देखता हूं कि यह कार्य 60 के दशक के बाद हमेशा समाप्त होता है।
const functions = require('firebase-functions');
const admin = require("firebase-admin");
const db = admin.database();
export let countFollowers = functions.database.ref('followers/{followee}/{follower}').onWrite(event => {
const followee = event.params.followee;
let path = `posts/${followee}/cnt_foll`;
const countRef = db.ref(path);
let out = countRef.transaction(current => {
if (event.data.exists() && !event.data.previous.exists()) {
return (parseInt(current) || 0) + 1;
} else if (!event.data.exists() && event.data.previous.exists()) {
return (parseInt(current) || 0) - 1;
}
});
return out;
});
संपादित करें:
मैं के साथ समस्या का समाधान निम्नलिखित "हैक", मैं, एक वादा अपने आप बनाते हैं, क्योंकि जो कुछ भी .transaction
लौटा रहा है काम नहीं कर रहा:
return new Promise(function(resolve, reject) {
countRef.transaction(current => {
if (event.data.exists() && !event.data.previous.exists()) {
return (parseInt(current) || 0) + 1;
} else if (!event.data.exists() && event.data.previous.exists()) {
return (parseInt(current) || 0) - 1;
}
},() => resolve(null));
});
यह 'फायरबेस' लाइब्रेरी के साथ ही एक समस्या की तरह दिखता है। –
यह "हैक" ने मेरे क्लाउड फ़ंक्शन के निष्पादन समय को काफी कम किया। –
किसी कारण से, यदि आप 'फिर' कहते हैं तो यह काम करता है। उदाहरण 'countRef.transaction (वर्तमान => {..})। फिर (() => {console.log ("लेनदेन समाप्त हुआ")}) – Christian