Je suis nouveau sur strapi et en général avec le développement back-end et j'essaie de comprendre comment de très petites choses devraient fonctionner.
J'ai un modèle utilisateur, un modèle profil et un modèle tarifaire.
Un utilisateur peut avoir un profil, j'ai donc créé une relation has and belongs to one
. Un profil peut avoir un tarif et j'ai créé la même relation entre profil et tarif.
Ce que j'ai remarqué ici, c'est:
Quand dans le client j'atterris dans la section du profil, je le sauvegarde avec toutes ses propriétés comme: nom, prénom, adresse, etc ... et tout se passe bien en y ajoutant l'ID utilisateur.
Le point ici est que dans la même section de profil, j'ai également des entrées de tarifs et ce que je voudrais faire est d'enregistrer les tarifs en enregistrant le profil et en n'ajoutant pas de bouton de sauvegarde spécial uniquement pour les tarifs ...
Est-il possible de faire quelque chose ou est-ce que je fais quelque chose de mal ici?
Je sépare les tarifs par profil pour pouvoir mieux trouver, organiser et travailler avec les tarifs sans interroger les profils à chaque fois mais ayant des enregistrements de profil par id ro quelque chose ...
Quelqu'un peut-il expliquer clairement la meilleure approche et que dois-je faire pour la réaliser correctement? Merci
Form
Entrée HTML pour créer données json imbriquées vous pouvez créer un formulaire et tester la sortie
<form action="profiles" method="POST" accept-charset="utf-8">
<input type="text" name="name" value="MyProfileName" />
<input type="text" name="fare[name]" value="MyProfileFareName" />
</form>
parameters
Les paramètres seront reçus de votre backend en tant que
name=MyProfileName&fare[name]=MyProfileFareName
Le contrôleur analysera les paramètres ci-dessus comme json
{
'profile' => {
'name' => 'MyProfileName',
'fare' => {
'name' => 'MyProfileFareName',
}
}
}
create
ou update
du contrôleurLe contrôleur doit être responsable de l'utilisation des paramètres reçus et de la mise à jour des modèles de base de données. Les méthodes add
et edit
pour conserver le model
dans le database
sont définies à l'intérieur des objets service
s (pas à l'intérieur du contrôleur), la responsabilité du contrôleur est uniquement d'appeler ces méthodes.
Vous pouvez récupérer le parameters
dans le body
du request
. L'objet request
est disponible dans le contrôleur ctx.request
Comme dans cet exemple l'action create
tilise le .add
méthode de la classe de services category
. Les api docs n'ont aucune explication à ce sujet et vous devez suivre l'exemple sur github .
module.exports = {
// POST /profiles
create: async (ctx) => {
// use the fare service to add a new entry with value request.body.fare
var profile = strapi.services.profile.add(ctx.request.body)
strapi.services.fare.add(ctx.request.body.fare)
return profile
}
};
Profile
service add
et edit
vous pouvez consulter les exemples sur github pour mieux comprendre la logique des méthodes add
et edit
.
add: async (values) => {
// Extract values related to relational data.
const relations = _.pick(values, Profile.associations.map(ast => ast.alias));
const data = _.omit(values, Profile.associations.map(ast => ast.alias));
// Create entry with no-relational data.
const entry = await Profile.create(data);
// Create relational data and return the entry.
return Profile.updateRelations({ _id: entry.id, values: relations });
},