Quel ORM dois-je utiliser pour Node.js et MySQL? [fermé]

326

J'écris un projet pour utiliser Node.js. Je voudrais continuer à utiliser MySQL comme base de données (même si cela ne me dérange pas de réécrire le schéma). Je recherche un ORM simple à utiliser et à performances raisonnables, qui prend en charge la mise en cache, les relations plusieurs à un et plusieurs à plusieurs. D'après les ORM MySQL que j'ai pu trouver, persistencejs et séquelles semblent les plus matures. Avez-vous de l'expérience avec l'un ou l'autre? Quels sont les avantages et les inconvénients pertinents dont je devrais être conscient dans ma décision?

Près de Privman
la source
Mais c'est un thème très intéressant. Souhaitez-vous avoir accès à des développeurs tiers pour modifier les données de votre site? Peut-être est-il préférable de créer une bibliothèque js intermédiaire qui envoie des paramètres de demande (méta-langage) à un backend?
sergzach
2
@sergzach Vous voulez élaborer? Google pour "mise en cache en veille prolongée".
ponzao
Hm ... Certains sites autorisent les applications utilisateur. Ou je ne vous ai pas compris, excusez-moi s'il vous plaît.
sergzach
2
@sergzach: La mise en cache est en fait une caractéristique assez importante d'un certain nombre de solutions ORM. Regardez Cayenne, par exemple.
Nate CK

Réponses:

101

Puis-je suggérer Node ORM?

https://github.com/dresende/node-orm2

Il y a de la documentation sur le fichier Lisez-moi, prend en charge MySQL, PostgreSQL et SQLite.

MongoDB est disponible depuis la version 2.1.x (sortie en juillet 2013)

MISE À JOUR: Ce package n'est plus maintenu, selon le fichier README du projet. Il recommande plutôt la bibliothèque et la séquelle

dresende
la source
27
Sur la base des documents, il semble que Sequelize soit bien en avance sur ce projet.
Tony O'Hagan
C'est une autre excellente option pour les personnes à la recherche d'ORM mysql. La syntaxe est plus complexe, mais agréable aussi.
dresende
2
le projet a changé d'URL: github.com/dresende/node-orm2
Capy
J'obtiens cette erreur «Erreur: impossible de trouver le module« chapeau »» lorsque j'essaie de déployer cela. .. aucune quantité d'installation ou de réinstallation de npm ne semble aider. Aucune suggestion? Merci
Gene Bo
1
Node-orm2 n'est plus activement entretenu. Il relie à sequelize et bookshelf.js.
seebiscuit
150

Je choisirais Sequelize en raison de son excellente documentation. C'est juste une opinion honnête (je n'ai jamais vraiment utilisé MySQL avec Node).

alessioalex
la source
10
Je voudrais également souligner que node-orm2 ou persistence.js ne fournissent pas de mécanisme de migration. persistence.js ne prend pas en charge les postgres. sequelize fait ces deux choses.
airtonix
4
J'ai utilisé node-orm2 et grâce à la meilleure documentation de Sequelize, j'ai pu la mettre en place et la faire fonctionner beaucoup plus facilement
Michael J. Calkins
2
@Gelidus Où avez-vous obtenu ces informations?
William Lepinski
14
Malheureusement, la documentation de Sequelize est récemment devenue terrible. J'ai commencé à utiliser Sequelize récemment et j'ai été très satisfait des documents. Il s'agit maintenant d'une pile générée automatiquement de liens rompus, d'informations obsolètes et d'exemples incomplets. Je vais quand même m'en tenir à ça. Ce n'est pas si difficile à apprendre.
Brad
2
Je viens de supprimer mon ancien commentaire et je suis maintenant à 100% d'accord avec @Brad, malheureusement :(
Andrey Popov
19

Tout d'abord, veuillez noter que je n'ai utilisé aucun d'entre eux (mais j'ai utilisé Node.js).

Les deux bibliothèques sont assez bien documentées et ont une API stable. Cependant, persistence.js semble être utilisé dans plus de projets . Je ne sais pas si tous les utilisent encore.

Le développeur de sequelize blogue parfois à ce sujet sur blog.depold.com . Lorsque vous souhaitez utiliser des clés primaires comme clés étrangères, vous aurez besoin du correctif décrit dans cet article de blog . Si vous souhaitez obtenir de l'aide pour persistence.js, un groupe Google lui est consacré.

D'après les exemples que je comprends, sequelize est un peu plus JavaScript (plus de sucre) que persistance.js mais prend en charge moins de banques de données (uniquement MySQL, tandis que persistance.js peut même utiliser des magasins dans le navigateur).

Je pense que la séquelle pourrait être la voie à suivre pour vous, car vous n'avez besoin que du support MySQL. Cependant, si vous avez besoin de fonctionnalités pratiques (par exemple la recherche) ou si vous souhaitez utiliser une base de données différente ultérieurement, vous devrez utiliser persistence.js.

hey_lu
la source
1
semble que persistencejs.org pointe maintenant vers un site indésirable, seul GitHub fonctionne
sansknwoledge
10

Une différence majeure entre Sequelize et Persistence.js est que le premier prend en charge un STRINGtype de données, c'est-à-dire VARCHAR(255). Je me sentais vraiment mal à l'aise de tout faire TEXT.

Josh Smith
la source
7
Actuellement, Persistence.js supprime également VARCHAR.
alehro
8
Dans des bases de données comme PostgreSQL, TEXT et VARCHAR sont exactement les mêmes, la seule différence est que si vous mettez une limite d'octets (VARCHAR (255)), vous avez une surcharge pour vérifier la limite. Il n'y a absolument aucun problème à utiliser TEXT pour tout dans PostgreSQL.
réécrit
3
L'utilisation de TEXT dans PostgreSQL est en fait la meilleure pratique, même si elle n'est pas portable.
cowbert