2017-06-04 2 views
1

Je développe une application avec Mongodb, Mongoose et Expressjs dans laquelle il y a des articles ou des messages de types différents. Par exemple, il y a une URL post qui inclut seulement une URL ou une adresse et qui n'a pas de texte à l'intérieur. Il y a des posts normaux, des posts sur la carte, des posts sur l'image et des tas d'autres types.Mongodb Schémas pour différents types de postes/articles

Maintenant, je veux définir le schéma de Post s dans mon application. Je suis un peu confus si je devrais définir des schémas différents pour chacun d'entre eux car ils devraient avoir des attributs et propriétés différents quand ils partagent certaines propriétés ou, mettre toutes les propriétés possibles dans le schéma Post et utiliser un attribut avec le nom type pour spécifiez le type de publication qui a été partagé.

Quelle est la meilleure pratique pour faire une telle chose?

Répondre

1

Cela dépend de vos besoins. Si vous souhaitez exécuter des requêtes sur l'intégralité de la collection Post pouvant générer différents types de publications, vous devez utiliser un schéma commun avec un attribut type. Sinon, rendez-vous avec les collections séparées, ce qui rend le système clair et facile à comprendre.

Si vous pensez utiliser une collection et que des attributs communs sont présents dans chaque schéma, vous devriez essayer le package mongoose-schema-extend. Avec cela, vous pouvez gérer vos schémas comme des classes et faire un héritage.

https://github.com/briankircho/mongoose-schema-extend

0

je recommande de mettre tous les attributs communs dans un schéma et laisser vos messages soient de type dynamique (par exemple vos messages pourraient avoir des images ainsi que du texte et des vidéos). Et vous pourriez vous retrouver avec quelque chose comme ceci:

post { 
    (_)id : ..., 
    user_id: ..., 
    . 
    . 
    . 
}, 
post_images{ 
    (_)id:..., 
    post_id:..., 
    uri:..., 
    . 
    . 
    . 
}