Reference guides (Sequelize model methods, Swagger) and migration reports from the MongoDB-to-MySQL and domain-based route structure migrations.
8.2 KiB
Méthodes disponibles sur l'objet Article (Sequelize)
Ce document liste toutes les méthodes automatiquement générées par Sequelize pour le modèle Article en fonction des associations définies dans src/database/relationships/index.js.
Associations Many-to-Many (belongsToMany)
1. Tags via TagList
Association alias: articleTags
Clés: foreignKey: "articleId", otherKey: "tagName"
article.getArticleTags() // Récupère tous les tags
article.setArticleTags([...]) // Définit les tags
article.addArticleTag(tag) // Ajoute un tag
article.addArticleTags([...]) // Ajoute plusieurs tags
article.removeArticleTag(tag) // Retire un tag
article.removeArticleTags([...]) // Retire plusieurs tags
article.countArticleTags() // Compte les tags
article.hasArticleTag(tag) // Vérifie si le tag est lié
article.hasArticleTags([...]) // Vérifie si les tags sont liés
// Alias généré par Sequelize (correspond à belongsToMany):
// Nom de la clé étrangère singularisée + pluralisé = "ArticleTag(s)" => "addTagList", "getTagList", etc.
article.addTagList(tag) // Ajoute un tag via l'alias
article.addTagLists([...]) // Ajoute plusieurs tags via l'alias
article.getTagLists() // Récupère les tags via l'alias
article.setTagLists([...]) // Définit les tags via l'alias
article.removeTagList(tag) // Retire un tag via l'alias
article.removeTagLists([...]) // Retire plusieurs tags via l'alias
article.countTagLists() // Compte les tags via l'alias
article.hasTagList(tag) // Vérifie si le tag est lié via l'alias
article.hasTagLists([...]) // Vérifie si les tags sont liés via l'alias
2. Users (Favoris) via Favorite
Association alias: articleFavoriteUsers
Clés: foreignKey: "articleId", otherKey: "userId"
article.getArticleFavoriteUsers() // Récupère les utilisateurs qui ont favorisé
article.setArticleFavoriteUsers([...]) // Définit les utilisateurs
article.addUserIdUser(user) // Ajoute un utilisateur
article.addArticleFavoriteUsers([...]) // Ajoute plusieurs utilisateurs
article.removeUserIdUser(user) // Retire un utilisateur
article.removeArticleFavoriteUsers([...]) // Retire plusieurs utilisateurs
article.countArticleFavoriteUsers() // Compte les utilisateurs
article.hasUserIdUser(user) // Vérifie si l'utilisateur a favorisé
article.hasArticleFavoriteUsers([...]) // Vérifie si les utilisateurs ont favorisé
Associations One-to-Many (hasMany)
3. Comments
Association alias: comments
Clé étrangère: articleId
article.getComments() // Récupère tous les commentaires
article.setComments([...]) // Définit les commentaires
article.addComment(comment) // Crée/ajoute un commentaire
article.addComments([...]) // Ajoute plusieurs commentaires
article.removeComment(comment) // Retire un commentaire
article.removeComments([...]) // Retire plusieurs commentaires
article.countComments() // Compte les commentaires
article.hasComment(comment) // Vérifie si le commentaire existe
article.hasComments([...]) // Vérifie si les commentaires existent
article.createComment({...}) // Crée un nouveau commentaire
4. Favorites (enregistrements de join)
Association alias: favorites
Clé étrangère: articleId
article.getFavorites() // Récupère les enregistrements Favorite
article.setFavorites([...]) // Définit les favoris
article.addFavorite(favorite) // Ajoute un enregistrement Favorite
article.addFavorites([...]) // Ajoute plusieurs enregistrements
article.removeFavorite(favorite) // Retire un enregistrement Favorite
article.removeFavorites([...]) // Retire plusieurs enregistrements
article.countFavorites() // Compte les enregistrements Favorite
article.hasFavorite(favorite) // Vérifie si le Favorite existe
article.hasFavorites([...]) // Vérifie si les Favorites existent
article.createFavorite({...}) // Crée un nouveau Favorite
5. TagLists (enregistrements de join)
Association alias: tagLists
Clé étrangère: articleId
article.getTagLists() // Récupère les enregistrements TagList
article.setTagLists([...]) // Définit les TagList
article.addTagList(tagList) // Ajoute un enregistrement TagList
article.addTagLists([...]) // Ajoute plusieurs enregistrements
article.removeTagList(tagList) // Retire un enregistrement TagList
article.removeTagLists([...]) // Retire plusieurs enregistrements
article.countTagLists() // Compte les enregistrements TagList
article.hasTagList(tagList) // Vérifie si le TagList existe
article.hasTagLists([...]) // Vérifie si les TagLists existent
article.createTagList({...}) // Crée un nouveau TagList
Associations Belongs-To (hasOne inverse)
6. Author (User)
Association alias: author
Clé étrangère: authorId
article.getAuthor() // Récupère l'auteur
article.setAuthor(user) // Définit l'auteur
article.createAuthor({...}) // Crée un nouvel auteur
Méthodes personnalisées du modèle
Méthodes d'instance définies dans Article.js :
article.toJSONFor() // Retourne un objet JSON formaté
// Format: { id, slug, title, description, body }
Hooks (Triggers)
Article.beforeValidate() // Déclenché avant la validation
// Génère automatiquement un slug basé sur le titre
// Format: slug(`${article.title}`) + '-' + random
Exemples d'utilisation concrets
Ajouter des tags à un article
const article = await Article.findByPk(1);
const tag = await Tag.findByPk('javascript');
await article.addTagList(tag); // Via alias
// ou
await article.addArticleTag(tag); // Via alias généré automatiquement
Récupérer les commentaires d'un article
const article = await Article.findByPk(1);
const comments = await article.getComments();
Obtenir les utilisateurs qui ont favorisé cet article
const article = await Article.findByPk(1);
const fans = await article.getArticleFavoriteUsers();
Créer un commentaire pour un article
const article = await Article.findByPk(1);
const comment = await article.createComment({
body: "Great article!",
authorId: userId
});
Compter les tags
const article = await Article.findByPk(1);
const tagCount = await article.countTagLists();
Notes importantes
-
Noms des méthodes générées : Sequelize génère les noms en fonction du nom de l'association (alias) ou du modèle.
- Si alias est
articleTags→getArticleTags(),addArticleTag(), etc. - Si alias est
tagLists→getTagLists(),addTagList(), etc.
- Si alias est
-
Singulier/Pluriel : Les méthodes
add*acceptent soit un seul élément (singulier) soit un tableau (pluriel). -
Paramètres optionnels : La plupart des méthodes
get*acceptent un paramètreoptionspour personnaliser la requête :article.getComments({ where: { createdAt: { [Op.gte]: someDate } }, limit: 10, offset: 0, order: [['createdAt', 'DESC']] }); -
Transactions : Toutes les opérations CRUD peuvent être encapsulées dans une transaction :
const transaction = await sequelize.transaction(); await article.addTagList(tag, { transaction }); await transaction.commit(); -
Alias vs Nom généré : L'alias défini dans la relation détermine le nom des méthodes générées. Dans ce projet, les alias comme
articleTags,tagListspermettent d'appelergetTagLists(),addTagList(), etc.