Hi Guys, im new ate bubble, and Xano. So with bubble everything is easy, when with one click we can create a thing and edit a thing as well, but in Xano i cant figure it out how to do this
Example:
I want to create a “Morada” (address), and add the “Morada” (address) create to the current user.
Does it always get added to the user after being created? If it does, why not just edit the create endpoint to then link it to the user based on the user auth? That would be simpler.
@pablopy100 The thing is, once you go with Xano, you are supposed to have EVERYTHING in Xano, including the users. You are no longer supposed to use the Bubble User table, as everything in Xano is based on User authentication. And no more privacy rules like Bubble either. You have to do all the security checks by adding checks in the Xano function stack, for every single API call, based on the context and security considerations of the call.
If you are new to Bubble and Xano, you will have a hard time doing this without some basic understanding of databases, security, and the basic principles of web development. My advice: keep it all in Bubble, or get ready to go through some serious training to level up
Hey use the “Xano action returns the response” event, then call the api to update the current user. In such way, you always have the response from the first step.
This what I meant about proper database modeling. You do not need to do it with 2-way linking like in Bubble.
In standard database design, with very few exceptions, you NEVER store a list of things in a column. I notice many of your columns have [integer] vs just integer. You are storing lists of things everywhere. That is one of the fundamental basics of relational databases. It is called “normalization” (see Database normalization - Wikipedia). You REALLY need to understand this before you do anything else. At least the basics of it. Forget about the more evolved normal forms after 3NF for now. Many things you learned from Bubble are just wrong in the context of more evolved database systems like Xano. “Welcome to the real world Neo”
Typically, you would only need to reference “user_id” in the “morada” table, which I am guessing is “household” in Portuguese. That is if only one user can own the “morada”.
Otherwise, if one user can have several different “moradas”, and if one “morada” can be attached to multiple different users, you would create what is called an “associative” table in Xano, which would have 2 columns: “Morada_ID”, and “User_ID”. We can call that table, for example, “Morada_Users”.
And then, you would first create the “Morada”, and, in Xano, use the result of the created “Morada” in the function stack, to then insert into “Morada_Users” table. You can do it all directly in Xano.
Here is a simple example in a Bubble + Xano app I am currently working on. When we create a new client in the system, we have many other dependencies and other things we need to create for that client. Here I have it inside a separate function, to keep things easier to read and maintain.
But the principle is the same: I first create the client, then the result of the newly created client is contained in the “client” var. And then, I call my function, passing it the result of “client” → id, which is the client ID of the client I just created, which I can then use to reference in other tables that have a “client_id” as a column and create the additional data.
And one last thing… if you are then wondering “but if I store the data outside the users table, how will I get the Moradas list for a specific user” ? Then you need to learn about “Addons” in Xano. Addons allow you to return complex data structures from multiple tables in a single call. See Addons (GraphQL-like) | Xano Documentation
Here is an example, where, from a “candidates” table, I also return the linked data from the associated “users” table, as well as data from linked tables about the groups a candidate is part of. All in one single Xano query
In this example, “GroupeCandidat” is an associative table that associated a group ID with a candidate ID. One candidate can belong to multiple groups, but one group can have many different candidates. Just like your Users + Moradas