Qual ORM devo usar para Node.js e MySQL? [fechadas]

326

Estou reescrevendo um projeto para usar o Node.js. Eu gostaria de continuar usando o MySQL como banco de dados (mesmo que não me importe em reescrever o esquema). Estou procurando um ORM de desempenho razoável, simples de usar, que ofereça suporte a cache, relações muitos-para-um e muitos-para-muitos. Nos ORMs do MySQL que pude encontrar, persistencejs e sequelize parecem os mais maduros. Você tem experiência com isso? Quais são os prós e contras relevantes dos quais devo estar ciente na minha decisão?

Perto de Privman
fonte
Mas é um tema muito interessante. Deseja obter acesso a desenvolvedores de terceiros para alterar dados em seu site? Talvez seja melhor ideia criar uma biblioteca js intermediária que envie parâmetros de solicitação (meta language) para um back-end?
Sergzach 27/05
2
@sergzach Cuidados para elaborar? Google para "cache de hibernação".
Ponzao 27/05
Hm ... Alguns sites permitem aplicativos do usuário. Ou eu não te entendi, com licença, por favor.
Sergzach 27/05
2
@sergzach: O armazenamento em cache é, na verdade, um recurso bastante importante de várias soluções ORM. Veja Cayenne, por exemplo.
Nate CK
Experimente o Oreo . github.com/will123195/oreo
será

Respostas:

101

Posso sugerir o nó ORM?

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

Há documentação sobre o Leiame, suporta MySQL, PostgreSQL e SQLite.

O MongoDB está disponível desde a versão 2.1.x (lançada em julho de 2013)

ATUALIZAÇÃO: Este pacote não é mais mantido, de acordo com o LEIA-ME do projeto. Em vez disso, recomenda estante e sequela

dresende
fonte
27
Com base nos documentos, parece que o Sequelize está muito à frente deste projeto.
Tony O'Hagan
É outra ótima opção para quem procura mysql ORM. A sintaxe é mais complexa, mas agradável também.
perfil completo de dresende
2
o projeto mudou URL: github.com/dresende/node-orm2
Capy
Eu recebo este erro "Erro: Não é possível encontrar o módulo 'hat'" quando tento implantar isso. .. nenhuma quantidade de instalação ou reinstalação do npm parece ajudar. Alguma sugestão? Obrigado
Gene Bo
1
O nó-orm2 não é mais mantido ativamente. Ele vincula a sequelize e bookshelf.js.
seebiscuit
150

Eu escolheria Sequelize por causa de sua excelente documentação. É apenas uma opinião honesta (nunca usei muito o MySQL com o Node).

alessioalex
fonte
10
Gostaria também de salientar que o node-orm2 ou o persistence.js não fornecem um mecanismo de migração. O persistence.js não suporta o postgres. Sequelize faz as duas coisas.
Airtonix # 6/13
4
Eu costumava nó-orm2 e devido a uma melhor documentação do Sequelize eu era capaz de obtê-lo instalado e funcionando muito mais fácil
Michael J. Calkins
2
@Gelidus Onde você conseguiu essas informações?
William Lepinski 22/09
14
Infelizmente, a documentação do Sequelize tornou-se terrível recentemente. Comecei a usar o Sequelize recentemente e fiquei bastante satisfeito com a documentação. Agora é uma pilha gerada automaticamente de links quebrados, informações desatualizadas e exemplos incompletos. Ainda vou continuar com isso. Não é tão difícil de aprender.
Brad
2
Apenas eliminado meu velho comentário e agora eu concordo 100% com @ Brad, infelizmente :(
Andrey Popov
19

Primeiro, observe que eu não usei nenhum deles (mas usei o Node.js.).

Ambas as bibliotecas estão bem documentadas e possuem uma API estável. No entanto, persistence.js parece ser usado em mais projetos . Eu não sei se todos eles ainda o usam.

Às vezes, o desenvolvedor do sequelize blogs sobre o assunto no blog.depold.com . Quando você quiser usar chaves primárias como chaves estrangeiras, precisará do patch descrito nesta postagem do blog . Se você quiser ajuda para o persistence.js, existe um grupo do Google dedicado a ele.

A partir dos exemplos, concluo que sequelizar é um pouco mais parecido com JavaScript (mais açúcar) do que persistance.js, mas tem suporte para menos datastores (apenas MySQL, enquanto persistance.js pode até usar armazenamentos no navegador).

Eu acho que sequelar pode ser o caminho a seguir, pois você só precisa do suporte ao MySQL. No entanto, se você precisar de alguns recursos convenientes (por exemplo, pesquisa) ou quiser usar um banco de dados diferente posteriormente, precisará persistence.js.

hey_lu
fonte
1
Parece que persistencejs.org agora está apontando para algum site indesejado, apenas a GitHub está trabalhando
sansknwoledge
10

Uma grande diferença entre Sequelize e Persistence.js é que o primeiro suporta um STRINGtipo de dados, ou seja VARCHAR(255). Eu me senti muito desconfortável fazendo tudo TEXT.

Josh Smith
fonte
7
Atualmente, o Persistence.js também suporta o VARCHAR.
alehro
8
Em bancos de dados como PostgreSQL, TEXT e VARCHAR são exatamente os mesmos, a única diferença é que, se você colocar um limite de bytes (VARCHAR (255)), terá uma sobrecarga para verificar o limite. Não há absolutamente nenhum problema em usar o TEXT para tudo no PostgreSQL.
reescrito
3
Usar o TEXT no PostgreSQL é realmente a melhor prática, mesmo que não seja portátil.
cowbert