Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get parameters from request in cloud functions? Firebase

I made https cloud functions, and I make a request to it with the iOS app. The Cloud function is called, since I can see the log, but I can not get the parameters from the request that I sent from the iOS app. I tried several different options but they helped me, please tell me how I can achieve the result?

const functions = require('firebase-functions'); const admin = require('firebase-admin');  module.exports = functions.https.onRequest((req, res) => {     console.log("getChatGroupConversationAvatars start", req.params);     const requestDict = req.params;     console.log("requestDict", requestDict);     const queryFormat = req.query.format;     console.log("queryFormat", queryFormat);     const conversationID = requestDict["conversationID"];     const currentUserID = requestDict["currentUserID"];      console.log("conversationID", conversationID, "currentUserID", currentUserID);      return console.log("getChatGroupConversationAvatars"); }); 

iOS app code

class ChatAvatarsManager {      func getChatGroupConversationAvatars(_ conversationID: String) {         DispatchQueue.main.async {             guard let currentUserID = RealmManager().getCurrentUser()?.id else { return }             DispatchQueue.global(qos: .background).async {                 let path = "https://us-central1-exampleapp.cloudfunctions.net/getChatGroupConversationAvatars"                 guard let url = URL(string: path) else { return }                 let parameters = ["conversationID" : conversationID, "currentUserID" : currentUserID]                 AlamofireExampleManager.shared.request(url, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: nil).responseJSON { (response) in                     switch response.result {                     case .success:                         debugPrint("getChatGroupConversationAvatars success")                     case .failure(let error):                         if error._code == NSURLErrorTimedOut {                             //timeout here                             debugPrint("getChatGroupConversationAvatars timeOut")                         }                         debugPrint("getChatGroupConversationAvatars \(error)")                     }                 }             }         }     }  }  struct AlamofireExampleManager {      static let shared: SessionManager = {         let configuration = URLSessionConfiguration.default         configuration.timeoutIntervalForRequest = 10         let sessionManager = Alamofire.SessionManager(configuration: configuration)         return sessionManager     }() 

For example I got this result in logs

conversationID undefined currentUserID undefined 

I also tried it

module.exports = functions.https.onRequest((req, res) => {      const conversationID = req.params.conversationID;     const currentUserID = req.params.currentUserID;      console.log("conversationID", conversationID, "currentUserID", currentUserID);      return console.log("getChatGroupConversationAvatars"); }); 
like image 909
Alexander Khitev Avatar asked Jul 10 '17 18:07

Alexander Khitev


1 Answers

I read this post and rewrote my code so it works for me.

const functions = require('firebase-functions'); const admin = require('firebase-admin');  module.exports = functions.https.onRequest((req, res) => {      const conversationID = req.query.conversationID;     const currentUserID = req.query.currentUserID;      console.log("conversationID", conversationID, "currentUserID", currentUserID);      return console.log("getChatGroupConversationAvatars"); }); 
like image 101
Alexander Khitev Avatar answered Sep 20 '22 23:09

Alexander Khitev