Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can i use MongoDB with Cloud Functions for Firebase?

I want to use Cloud Functions for Firebase and MongoDB. The problem is I don't know how to connect my Mongo database with Cloud Functions. My database is deployed at matlab. I made this schema:

var mongoose = require('mongoose')
var Schema = mongoose.Schema

var patientSchema = new Schema({

    name: {
        type: String,
        required : true,
    },

    disease:{
        type: String,
        required : true, 
    },

    medication_provided: {
        type: String,
        required : true,
    },

    date : {
        type : Date,
    }
})

const patient = mongoose.model('patientInfo', patientSchema)
module.exports = patient

Then I require my schema in project index.js file, and export a function called getAllPatient.

const patient = require('../Patient')
const functions = require('firebase-functions');
const mongoose = require('mongoose')

mongoose.connect('mongodb://patient:[email protected]:39869/patient',{useMongoClient: true})
exports.getAllPatient = functions.https.onRequest((request, response) => {
    patient.find({}).then((data) => {
        response.send(data)
    })
})

but gives me an error that "Error: could not handle the request"

like image 565
sabih siddiqui Avatar asked Jan 30 '23 20:01

sabih siddiqui


2 Answers

I was recently facing this type of error and found that firebase free plan doesn't allow the outbound connections from within the functions. If you need to call external http/tcp connections, you are required to be on the flame or blaze plan. see the screenshot attached below or see the section cloud functions -> outbound networking at this link Firebase Pricing

enter image description here

like image 175
Anant Anand Gupta Avatar answered Feb 01 '23 09:02

Anant Anand Gupta


Try to design the cloud function in a similar way shown in a link below:-

https://github.com/firebase/functions-samples/blob/master/authorized-https-endpoint/functions/index.js

I've tried with mongoose long time back and it was working fine and but it's slow because for every new request it's going to open the mongoose connection and serve you the data.

Hope this helps!!

like image 42
Gaurav Sharma Avatar answered Feb 01 '23 09:02

Gaurav Sharma