Home > Back-end >  How to create a Flutter Stream using MongoDB (watch collection?) with Firebase Cloud Function
How to create a Flutter Stream using MongoDB (watch collection?) with Firebase Cloud Function

Time:12-14

I've been trying out MongoDB as database for my Flutter project lately, since I want to migrate from pure Firebase database (some limitations in Firebase are an issue for my project, like the "in-array" limit of 10 for queries).

I already made some CRUD operations methods in some Firebase Cloud Functions, using MongoDB. I'm now able to save data and display it as a Future in a Flutter App (a simple ListView of Users in a FutureBuilder).

My question is : how would it be possible to create a StreamBuilder thanks to MongoDB and Firebase Cloud Functions ? I saw some stuff about watch collection and Stream change but nothing clear enough for me (usually I read a lot of examples or tutorial to understand).

Maybe some of you would have some clues or maybe tutorial that I can read/watch to learn a little bit more about that subject ?

For now, I have this as an example (NodeJS Cloud Function stored in Firebase), which obviously produces a Future in my Future app (not realtime) :

exports.getUsers = functions.https.onCall(async (data, context) => {
    const uri = "mongodb srv://....";
    const client = new MongoClient(uri);
    await client.connect();
    var results = await client.db("myDB").collection("user").find({}).toArray();
    await client.close();
    return results;
});

What would you advice me to obtain a Stream instead of a Future, using maybe watch collection and Stream change from MongoDB, providing example if possible !

Thank you very much !

CodePudding user response:

Cloud Functions are meant for short-lived operations, not for long-term listeners. It is not possible to create long-lived connections from Cloud Functions, neither to other services (such as you're trying to do to MongoDB here) nor from Cloud Functions back to the calling client.

Also see:

  • Related