खोज…


अपने आवेदन के लिए बैकएंड के रूप में फायरबेस क्यू का उपयोग कैसे करें

Firebase बैकएंड को एक सेवा के रूप में प्रदान करता है, Applciation डेवलपर के रूप में आपके पास बैकएंड कोड रखने का विकल्प नहीं है।

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

कोड में आने से पहले आर्किटेक्चर को समझने दें, यह कैसे काम करेगा। संक्षिप्तता के लिए मान लीजिए कि हम एक बैकएंड के रूप में वेब साइट का उपयोग एक दृश्यपटल और NodeJs सर्वर के रूप में कर रहे हैं

आवश्यक शर्तें

  1. अपने Google खाते का उपयोग करके फायरबेस एप्लिकेशन बनाएं

  2. अपने वेब पेज पर फायरबेस जोड़ें। bower install firebase --save उपयोग करें

  3. अपने नए बनाए गए फायरबेस खाते (सेटिंग्स-> अनुमतियाँ -> सेवा खाते -> सृजन सेवा खाता -) का उपयोग करके सेवा खाता बनाएं (यह नाम निर्दिष्ट करें और "एक नई निजी कुंजी" चेकबॉक्स को जांचें) -> json फ़ाइल को सहेजें, हमें आवश्यकता होगी वह बाद में।

  4. NodeJs सर्वर को कॉन्फ़िगर करें जिसे आपके पसंदीदा वातावरण में होस्ट किया जा सकता है

  5. queue/specs अंदर निम्नलिखित समापन बिंदु बनाएं

    "अनुरोध प्रतिक्रिया":

     {
         "error_state": "request_error_processing",
         "finished_state": "finished_state",
         "in_progress_state": "request_in_progress",
         "start_state": "request_started"
     }
    
  6. NodeJs सर्वर के अंदर फ़ायरबस सर्वर साइड संस्करण npm install firebase --save , npm install firebase --save , और npm install firebase --save फ़ाइल का उपयोग करके अपने सेवा खाते को ठीक करें जो हमें चरण 3 से मिला है, यह इस तरह दिखता है

    firebase.initializeApp ({serviceAccount: './your_file.json', databaseURL: 'get_from_firebase_account'});

आर्किटेक्चर

यहां पूरा चक्र है कि यह कैसे काम करता है।

आगे की ओर आप इन चरणों को करने वाले हैं

  1. फायरबेस वेब sdk का उपयोग करके आप समापन बिंदु 'कतार / कार्यों' में सीधे फायरबेस डेटाबेस में अपने अनुरोध लिख रहे हैं, जो आपके अनुरोध को बैकएंड पर भेज रहे हैं।
  2. अपने कार्य को सम्मिलित करने के बाद आप अंतिम queue/tasks/{taskKey} पर श्रोता को पंजीकृत कर रहे हैं, जिसे तब कॉल किया जाएगा जब बैकएंड आपके अनुरोध को संसाधित करता है, कार्य के अंदर प्रतिक्रिया लिखना

बैकएंड साइड में आप इन चरणों को करने वाले हैं

  1. सर्वर बनाएँ जो अनंत रूप से 'कतार / कार्यों' को सुनता है
  2. अपने कार्यों को संसाधित करता है और queue/tasks/response अंदर प्रतिक्रिया प्रतिक्रिया डेटा लिखता है
  3. कार्य निकालें

सबसे पहले इस हेल्पर फ़ंक्शन को बनाएं, जो कॉलबैक और वादों को संभालने का एक तरीका प्रदान करता है

function createPromiseCallback() {
    var cb;
    var promise = new Promise(function (resolve, reject) {
        cb = function (err, data) {
            if (err) return reject(err);
            return resolve(data);
        };
    });
    cb.promise = promise;
    return cb;
}

सामने वाले पक्ष में आपके पास यह फ़ंक्शन है

function sendRequest(kind, params, cb) {

    cb = cb || createPromiseCallback();
    var requestObject = {
        kind: kind,
        params: params
    };
    var tasksRef = firebase.database().ref('queue/tasks');

    var requestKey = tasksRef.push().key;

    var requestRef = tasksRef.child(requestKey);

    function requestHandshake(snap) {
        if (snap && snap.exists() && (snap.val().response || snap.val()._state ===    config.firebase.task.finishState || snap.val()._error_details)) {
            var snapVal = snap.val();
            if (snapVal._error_details) {
                cb(snapVal._error_details.error);
            } else {
            cb(null, snapVal.response);
        }
        requestRef.off('value', requestHandshake);
    }
   }

   var bulkUpdate = {};
   bulkUpdate['queue/tasks/' + requestKey + '/request'] = requestObject;
   bulkUpdate['queue/tasks/' + requestKey + '/_state'] = config.firebase.task.startState;

   firebase.database().ref().update(bulkUpdate)
    .then(function (snap) {
        requestRef.on('value', requestHandshake);
    }).catch(function (err) {
        cb(err);
    });

   return cb.promise;
  }

आप इस फ़ंक्शन का उपयोग sendRequest('CreateHouseFacade', {houseName:'Test'})

प्रसंस्करण अनुरोध के लिए कॉल करने के लिए कौन सी विधि है, यह जानने के लिए किंड पैरामीटर बैकएंड के लिए है। अतिरिक्त पैरामीटर जानकारी पारित करने के लिए परमेस हैं।

और यहाँ बैकएंड कोड है

const database = firebase.database();
const queueRef = database.ref('queue');

const queueOptions = {
    'specId': 'request_response',
    'sanitize': false,
    'suppressStack': false,
    'numWorkers': 3
};

function removeTask(task) {
    var taskRef = queueRef.child(`tasks/${task._id}`);
    return taskRef.remove();
}

function processTask(data, progress, resolve, reject) {
    try {
        requestHandler(data.request).then(response => {
            data.response = response || null;
            return resolve(data);
        }).catch(err => {
            return reject(err);
        }).then(snap => {
            removeTask(data);
        });
    } catch (err) {
        reject(err).then(snap => removeTask(data));
    }
}

function requestHandler(request) {
    if (!request || !request.kind) throw new Error('Absent Request or Kind');
    var deferredResponse = requestHandlerFactory(request.kind, request.params);
    return deferredResponse;
}

function requestHandlerFactory(kind, params) {
    // It includes mapping all your backend services
    switch (kind) {
        case 'CreateHouseFacade': return myService(params)
        default: throw new Error(`Invalid kind ${kind} was specified`);
    }
}

फ़ंक्शन myService में आपका व्यावसायिक तर्क कोड होता है जो CreateHouseFacade अनुरोध को पूरा करने वाला होता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow