Another question please.. what does this mean? I get this when I try to perform a "Do It" on some of my blocks..

Obviously this has something to do with my issue..
Another question please.. what does this mean? I get this when I try to perform a "Do It" on some of my blocks..

Obviously this has something to do with my issue..
You are inside a procedure or function that requires an input. App Inventor offers you the opportunity to enter an input so that you can run the function/procedure to get a Do It output
How to Structure a databse in FirebaseDB
After reading the above article AGAIN, I decided to scrap my current database structure and start from scratch. I can see the advantages of this more 'flat' structure compared to what I was trying to do.
Thanks ABG for pointing me in that direction.. I think someone else also posted that link at me earlier, thanks to you too!
I will let you all know how it works out.
So I dumped the old database format in favor of something that I understand is called "flatter" than my old one. I do understand the design and it makes sense. It will be easier to edit the fields one at a time I think, which was my issue in my old version. Here is part of what I have so far..
This is the new user creation routine where new users can login and create their account. They fill in 3 fields from the design page, their username, their password, and they choose a chat name for when they are communicating with each other in the app. The other two variables are defined a value at sign up.
I am having some issues though, the Append blocks are not adding anything to my database. I thought well since this is brand new and there is no data, maybe there is nothing to Append to .. so I made a little StoreValue routine to create data.. That data created just fine but my appends still don't seem to add data. Thats one issue..
Second I am getting this error when trying to see if a username already exists in the database:

This is supposed to be looking up and comparing usernames but it doesn't?
Which led me to my third possible issue.. In my old method, someone pointed out that I needed to use the JSONTextDecode block from Web1 .. am I having the second issue because I do not have that block n my routine?
Sorry for all the trouble..
We need to see
Regarding your parallel list structure, I find those very fragile.
They require you to keep all those lists in perfect sync, at risk of mismatching items down the line if you slip a gear. WHat if an item is empty or its insertion fails ?
It is more robust to keep attributes of an object together with tags, regardless of extra storage cost.
Regarding initialization of FireBase lists, you have to write an empty list to the tag value before you can do your first append to that tag.
Users are not an appropriate thing to keep in lists. Better to keep your user collection as an object with tags of unique user names, and each user tag value is an object with all its attributes, by attribute name.
That keeps all information about any particular user together.
If I understand your suggestion correctly, you are saying to use the user name as the tag, and the rest of the data would be the values? Something like in this example:

or like this..

You need an extra level, like:
There are no lists here, only an Employee branch with unique sub branches, one per employee.
To update your year of birth, the tag to use would be Employee/Carl_Aydelotte/dob/year and value whatever your birth year ir.
I see .. you have given me a lot to think about ...
OK I am stuck again. I like the idea of the data structure you mention in your last post, above. I can see the merits of it from reading all the other posts about DBs and the problems that other users have run into.

I am setting my bucket to 'Users' and the tags to the users' name .. its the values that I cannot seem to get right now. It's easy if there is only the one value but when there are multiples I cannot figure out the blocks. Is it some kind of list? How do I do this?
Hear that? That's frustration setting in once again. I understand the concepts, it's the execution that I can't figure out.
Wait .. i think I may have it..
Darnnit I am so close but I just cant get it ..
This isn't right, its just four values and not pairs that I can reference..


Took me long enough!


Thank you ABG for all the help. I really did learn a lot today. Trial and error has its merits.
The double slashes (//) in the tags are new to me.
I have been using single slashes.
I found that in somebody's YouTube video..
Maybe a more frequent FireBase user might have something to say on slash versus double slash in the tags.
Out of curiosity, when you said that about updating the birth year in your example, what would the blocks look like to drill down to that level? My database doesn't go that deep but I am curious..
It would be a single StoreValue with a value of your year, and a tag built up from a JOIN following the branches from left to right to reach the year, separated by / at each level.
You had the idea in saveUserData02.
The JOIN block accepts more sockets through its blue mutator button.
What's the difference here?

I mean I get that there are no variables and it points to a specific place but thats my question .. will I get to the year of my birth? If this were production I would use variables so I could get to anywhere but this is just an example.
I did find the bus route tutorial and it backs up my case?
Aside from the typo, no difference.
The JOIN makes it easier to read and edit.
That tutorial is not familiar to me.
This one .. I found it helpful for someone at my level of skill
@SteveJG posted it in this thread earlier..