ตัวแปรโกลบอลฝั่งเซิร์ฟเวอร์ฟังก์ชัน Firebase cloud

เป็นไปได้ไหมที่จะมี ตัวแปรทั่วโลก บนฟังก์ชันคลาวด์ของ firebase

ฉันหมายความว่าฉันอาจมี index.js เช่นนั้นในการตั้งค่าตัวแปรร่วม สมมติว่า panicModeVariable

และฉันต้องการตรวจสอบฟังก์ชันคลาวด์ของฉันในตัวแปรนี้ก่อนดำเนินการใดๆ อย่างเช่นที่นี่ในการตรวจสอบสิทธิ์สร้างทริกเกอร์ผู้ใช้

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

var globalVariable = false;

// Create Account User
exports.createUserAccount = functions.auth.user().onCreate(event => {
    if (!globalVariable) {
        const uid = event.data.uid
        const email = event.data.email
        const photoUrl = event.data.photoURL
    }
    [...]

ฉันลองใช้ฟังก์ชันจำลองสองฟังก์ชัน

exports.setGlobal = functions.https.onRequest((request, response) => {
    globalVariable = true;
    response.send("Set " + globalVariable);
});

exports.getGlobal = functions.https.onRequest((request, response) => {
    response.send("Read " + globalVariable);
});

แต่ดูเหมือนว่าฉันไม่สามารถเข้าถึงตัวแปรนี้ได้ในแบบที่ฉันตั้งใจไว้

ฟังก์ชั่นการเขียนจะใช้ตัวแปร 'ท้องถิ่น' ในขณะที่การอ่านจะใช้ค่าเริ่มต้นเสมอ

ฉันต้องการทำเช่นนั้น หากเป็นไปได้ เพื่อให้มีตัวแปรฝั่งเซิร์ฟเวอร์ ให้อ่านได้โดยตรงโดยไม่จำเป็นต้องเรียก SDK เพื่ออ่าน สมมติว่าเป็นค่าที่จัดเก็บฐานข้อมูล (เพื่อไม่ให้มีการนับการเรียกใช้ฟังก์ชัน)


person Cod3Flu3nc3    schedule 19.02.2018    source แหล่งที่มา


คำตอบ (1)


คุณสามารถใช้ตัวแปรการกำหนดค่าสภาพแวดล้อม https://firebase.google.com/docs/functions/config-env

เท่าที่ฉันทราบ คุณไม่สามารถตั้งค่าพวกมันในฟังก์ชันได้ด้วยตัวเอง แต่ CLI จะต้องตั้งค่าพวกมันก่อนจึงจะอัพโหลดฟังก์ชันได้

คุณสามารถทำบางอย่างเช่น firebase functions:config:set panic.mode=true

จากนั้นในฟังก์ชัน createUserAccount ของคุณ คุณสามารถเรียก functions.config().panic.mode ได้

แต่สิ่งนี้จะไม่ช่วยคุณ set ตัวแปรผ่านทริกเกอร์ https เพื่อที่คุณจะต้องใช้ประโยชน์จากฐานข้อมูล

person sketchthat    schedule 20.02.2018