Open kennyray opened 8 years ago
If you are having this problem. It is because you do not understand how await and async work in c#. I recommend go learning how they operate.
Example: var firebase = new FirebaseClient("https://you.firebaseio.com/"); var dinos = firebase.Child("your-info");
var query = QueryExtensions.WithAuth(dinos, auth.FirebaseToken).OnceAsync
Here query contains all of the objects you need. But ONLY because i did not use await. If i had used await. It would have contained nothing UNTIL the request was finished.
First, let me thank you for responding. You are correct in that I am still learning about await and async.
I think I may not have been clear enough in my question however. I do understand how OnceAsync works. I originally had that working just fine. What I'm trying to figure out is how to setup a subscription. Using the example code provided, I'm able to get one item at a time through the onNext handler, but the problem is that I never know when the data is finished, so if the record set on the server changes, it sends me everything again, and my local collection has everything in it twice.
Again, I acknowledge that this is my own ignorance at work here. I'm just looking for some guidance on how to learn how this stuff works. I looked up Reactive, and I think I understand the principles. I'm just not sure how to apply them in this case.
When I did this in Objective-C, I was given back a collection of all the items at once, not individual items. So it seems that the way it's done in C# is a bit different.
Thanks for any further help you can offer.
Kenny
On Nov 4, 2016, at 3:42 PM, dthall43 notifications@github.com wrote:
If you are having this problem. It is because you do not understand how await and async work in c#. I recommend go learning how they operate.
Example: var firebase = new FirebaseClient("https://you.firebaseio.com/"); var dinos = firebase.Child("your-info"); var query = QueryExtensions.WithAuth(dinos, auth.FirebaseToken).OnceAsync
Here query contains all of the objects you need. But ONLY because i did not use await. If i had used await. It would have contained nothing UNTIL the request was finished.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.
Hello all,
i'm new to firebase with c# xamarin and i would like to make a sample application. This sample application can just connect to firebase and react with my device on real time.
I can connect to firebase, add, deleve datas, but each time i add on => console firebase a new data my device is not synchronise directly ...
How i can do that ? i read the wiki about subscribe but how i can use it ?
Is there possible to have a little sample or isn't possible to do that actually ?
Thanks for your knowledge you share that's really great to use some project here.
Christophe
You could create an observer which listens to changes made in the database. You can create an observer like this:
var firebase = new FirebaseClient("https://you.firebaseio.com/");
var observer = firebase.Child("<your-folder>").AsObservable<T>();
Later you can subscribe your observer to the database
Observer.Subscribe(next =>
{
//do stuff here with every item you collect from the database
},
onError =>
{
//do stuff here when an error occurs
},
onCompleted =>
{
//do stuff here when all items are fetched from the database
}
);
I must add that the onError and onCompleted are not called in my project. I have added a post on this page regarding that issue.
@kennyray Thank you for posting this question. I myself getting this error. When i update some data, it returns whole data under that node. Also .Subscribe() called for every item in that particular node.
How you solved this?
@pallavbohara @kennyray you able to solve it?
Was anyone able to solve this issue? Is there anywhere I can go for better documentation?
@pallavbohara @navingp @pbrownTexasDevices I didn't solve it, and I ended up moving away from Firebase. Sorry I can't help further...
@kennyray What did you move to if you don't mind me asking.
@pbrownTexasDevices I moved to Azure, but couldn't figure out how to do login, so I stopped working on the project and closed my Azure account because it was costing me money each month. I have been working with Xamarin OAuth and once I have that figured out I will be trying AWS for the db next.
It would be nice if there was a discussion forum where we could talk about how to do stuff without posting as issues. Does that exist? A Slack channel perhaps?
I guess that I resolved this problem, changed the way that I subscribed.
FirebaseDataBaseConfig.Suscription.Add(FirebaseDataBaseConfig.RootReference.Child("chats").Child(conversation).OrderByKey().LimitToLast(1).AsObservable
If you limit to last item in your subscription, the event "onNext" only once called. I tried with "onCompleted" event, but this never fired.
I cannot figure out how to get realtime data. I can get one at a time, but there is no notification saying that the data is finished updating. Can anyone show me how to do it so that I'll know when all the data has come in? Or can it give me a collection of items instead of one at a time?