Lorsque vous travaillez avec une base de données, il est courant de rencontrer des relations un-à-plusieurs et plusieurs-à-plusieurs. Dans de tels scénarios, un mappage efficace et évolutif de ces relations avec les structures Go est crucial.
Une approche efficace consiste à exploiter Agrégateurs de tableaux de PostgreSQL et fonctionnalité GROUP BY. Cela implique la création d’une vue qui regroupe les éléments et leurs données associées à l’aide d’une agrégation de tableaux. La vue résultante peut ensuite être interrogée, avec le contenu du tableau non organisé dans une structure Go.
SELECT tag.name, tag.id FROM tag WHERE item_id = item.id
) AS taglist
GROUP BY
item.id
`
db.MustExec(sql)
Le code Go serait alors :
return err
}
if err := json.Unmarshal([]byte(jsonString), &item); err != nil {
return err
}
items = append(items, item)
}
Cette approche combine la flexibilité de PostgreSQL avec l'efficacité de l'agrégation de tableaux et du marshalling au niveau des lignes dans Go. Elle évolue de manière transparente, même dans le cas de relations complexes.
Bien que l'approche recommandée soit efficace et polyvalente, les solutions alternatives mentionnées dans la question ont leurs propres forces et faiblesses. :
En fin de compte, la meilleure approche dépend des exigences spécifiques de l'application et des technologies disponibles.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3