Kotora
Kotora

Reputation: 135

User data structure with Firebase

I asked several times and nobody gives me proper answer. So in Firebase, is this the proper data structure?

{
  "users" : {
    "-JNNJ-0ErS6kX5AFkfM3" : {
      "userUid" : "simplelogin:66",
      "userId" : "66",
      "email" : "[email protected]"
    }
   "accounts" : {
    "-JLXe5iaH-TLSBu0RJqp" : {
      "currency" : "-JLXe--zoxk1DdKa9mAT",
      "description" : "account1",
      "name" : "account1"
    },
    "-JNJdqZouwAfEzmCSHTO" : {
      "description" : "asdasd",
      "name" : "dsad"
    },
    "-JLgcjINbZni6luTuPSY" : {
      "currency" : "-JLXe--zoxk1DdKa9mAT",
      "description" : "fefef",
      "name" : "bkkjsdds"
    }
  },
  "categories" : {
    "-JLgd4W8COP6zOlhNdq9" : {
      "color" : "#c55353",
      "account" : "-JLXe5iaH-TLSBu0RJqp",
      "description" : "fds",
      "name" : "dsfdsfds"
    }
  },
  "records" : {
    "-JNNK2hnJ99dZqRmfsjs" : {
      "date" : "2005-09-28T10:48",
      "amount" : 123,
      "description" : "description",
      "category" : "-JLgd4W8COP6zOlhNdq9"
    }
  }
  },
}

If it's hard to read, there is explanation.

I have a user with a key. User has accounts > every account has categories (every category has a key from an account) > every category has records (every record has a key from a category.

So for example that one record (I am describing parameters):

record's key: -JNNK2hnJ99dZqRmfsjs records belongs to category with the key: -JLgd4W8COP6zOlhNdq9

People from Firebase unfortunately didn't help me at all and I don't understand their single tutorial.

Is this the proper way to do so? I just want to have data for each user (nobody else can't see another user's data).

EDIT:

Is this correct? I know that post. But I still don't understand it.

In real world is this proper way?

users
  -JNNK2hnJ99dZqRmfsjs   (key of user1 for example)
    name
    id
    etc
accounts
  -JLgd4W8COP6zOlhNdq9 (key of some account)
    name
    description
    -KFTf6W8COP6zOlhNdq9 (key of user - account belongs to user and account has users reference - the key)

Is this correct?

EDIT2:

Look at this: awesome.firebaseio-demo.com

Anant has beautiful tree:

users
  user1
    name
  user2
    name

How did he do it? I thought I can work only with keys.

Upvotes: 0

Views: 291

Answers (1)

Casero
Casero

Reputation: 322

Firebase blog post - Denormalizing Your Data is Normal helps you with proper data structure.

The second question ("nobody else can't see another user's data) is about security rules - you have to determine who can read data.

Upvotes: 1

Related Questions