I would like to provide structure to the firebase data tables. Hence, I want to create a schema (similar to mongoose) based on which the entries to the database can be written. How can this be achieved?
There are two libraries then enable creating schema for firebase:
Firebase Schema
Bolt
Bolt is a library developed by firebase itself
To validate the structure of data that can be written to the Firebase Realtime Database, you use the .validate clause in its server-side security rules. Instead of repeating them here, I'll refer you to its documentation: https://firebase.google.com/docs/database/security/
Related
I have migrated data to firebase storage, which have structure like:
<fileId>/<filename>
I can store fileIds associated with user in firebase database like:
<userId>/<fileids>
Is there anyway I can get something like auth.uid/fileids from firebase database in security rules of firestorage, to only allow to read file to auth user, if fileIds belong to him. If not, what all options are available to achieve the same and which one is best among them?
It's currently not possible to use data from databases in your Cloud Storage security rules. You can only use information about the object stored in the bucket.
You could instead write a backend API that performs all the checks and then operates on the object in storage, or store information about the file in its metadata for use in rules.
Does firebase storage have a built-in capability to automatically persist data offline like firestore, I can't find such feature in documentation.
It does not. You would have to implement that yourself, or find a some sort of library that does what you want.
I would like to use data in the realtime database to allow user access in the firestore database. Is it possible to reference nodes in the realtime database from the firestore security rules?
It is currently not possible to cross between database products like this in security rules. Please feel free to file a feature request for this.
You can, however, write code to run on Cloud Functions that deals with database changes after the change has happened, and undo or restrict the change there.
I was wonder is there any rules I need to follow in Firebase Realtime Database like in a normal table-style database? It is my first time using document-styled database. Is it I can structure my table on my own as long as there is no problem in retrieve and save data? Thanks in advance for everybody who guides me. :)
The Firebase Realtime Database is a schemaless database. By default you can store any valid JSON data in it.
You can however control what data can be written by clients, by using Firebase's server-side security rules. These allow you to declaratively control both who can read/write data, and what data they can write.
For more on this, see:
the overview documentation on Firebase's security rules
the detailed documentation on security rules for the Realtime Database
this video on security rules, which is the first in a new series.
Firebase's documentation has the following paragraph:
Using Cloud Firestore and Realtime Database: You can use both databases within the same Firebase app or project. Both NoSQL databases can store the same types of data and the client libraries work in a similar manner. Keep in mind the differences outlined above if you decide to use both databases in your app.
I can't find any documentation on how to add a Cloud Firestore to an existing project with a Realtime Database, though. I will ultimately upgrade to Cloud Firestore, but would like some time to experiment and learn before I convert the production database.
Does anybody know how to use both databases in the same Firebase project?
When you go to your project in the console and choose the Database product, you should see something like this the first time:
This is a selector that lets you choose to see either Realtime Database or Firestore in your project. You can switch between the two with this selector.
The first time you select Cloud Firestore, it will ask you to configure things. Start in "test mode" to set things up for full read and write without authentication to get started quickly, but of course your should always have rules set up in production.
After you set up Firestore, you should be able to use both client SDKs to access both databases independently.