node.js - Firebase फ़ंक्शन: अपरिभाषित की 'user_id' संपत्ति नहीं पढ़ सकते हैं



firebase-realtime-database firebase-cloud-messaging (1)

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

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotification = functions.database.ref('/notifications/{user_id}').onWrite((event) => {

  console.log('Testing stuff', event.params.user_id);

  return;
});

नया डेटा विशिष्ट डेटाबेसिबल पर लिखे जाने पर यह ट्रिगर हो जाता है लेकिन यह त्रुटि दिखाता है:

TypeError: Cannot read property 'user_id' of undefined
    at exports.sendNotification.functions.database.ref.onWrite (/user_code/index.js:8:44)
    at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:112:27)
    at next (native)
    at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71
    at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:82:36)
    at /var/tmp/worker/worker.js:700:26
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)

सूचना डेटाबेस इस तरह दिखता है:


आपको नवीनतम फायरबेस-फ़ंक्शंस और फ़ायरबेस-व्यवस्थापक स्थापित करने की आवश्यकता है:

npm install firebase-[email protected] firebase-[email protected] --save
npm install -g firebase-tools

नए API का उपयोग करने में सक्षम होने के लिए, अधिक जानकारी के लिए यहां देखें:

https://firebase.google.com/docs/functions/get-started#set_up_and_initialize

इसे बदलो:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotification = functions.database.ref('/notifications/{user_id}').onWrite((event) => {

console.log('Testing stuff', event.params.user_id);

इस मामले में:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.sendNotification = functions.database.ref('/notifications/{user_id}').onWrite((change, context) => {

console.log('Testing stuff', context.params.user_id);

onWrite और onUpdate ईवेंट के लिए, डेटा पैरामीटर फ़ील्ड before और after है। इनमें से प्रत्येक एक DataSnapshot है, जो DataSnapshot में समान विधियों के साथ उपलब्ध है

params

रीयलटाइम डेटाबेस ट्रिगर के लिए रेफरी () विधि को प्रदान किए गए पथ पैरामीटर में वाइल्डकार्ड के मूल्यों वाले ऑब्जेक्ट।

अधिक जानकारी यहाँ:

क्लाउड फ़ंक्शन v1.0 परिवर्तन

EventContext#params

Change