Який ORM я повинен використовувати для Node.js та MySQL? [зачинено]


326

Я переписую проект для використання Node.js. Я хотів би продовжувати використовувати MySQL як БД (хоча я не проти переписати схему). Я шукаю простого у використанні, розумної продуктивності ORM, який підтримує кешування, відносини "багато на один" і "багато на багато". З MySQL ORM, які я міг знайти, persistentjs і секвелізуються здаються найбільш зрілими. Чи маєте ви досвід роботи з одним із них? Які відповідні плюси та мінуси я повинен знати про своє рішення?


Але це дуже цікава тема. Хочете отримати доступ до сторонніх розробників для зміни даних на вашому сайті? Може бути, краще створити проміжну бібліотеку js, яка надсилає параметри запиту (мета мови) в бекенд?
серджач

2
@sergzach Догляд допрацювати? Google для "кешування в глибокому режимі".
пончао

Гм ... Деякі сайти дозволяють користувацьким програмам. Або я вас не зрозумів, вибачте, будь ласка.
серджач

2
@sergzach: Кешування насправді є досить важливою особливістю ряду рішень ORM. Подивіться, наприклад, на Каєнну.
Nate CK

Спробуйте Oreo . github.com/will123195/oreo
Will

Відповіді:


101

Чи можу я запропонувати Node ORM?

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

На Readme є документація, яка підтримує MySQL, PostgreSQL і SQLite.

MongoDB доступний з версії 2.1.x (випущена в липні 2013 року)

ОНОВЛЕННЯ: Цей пакет більше не підтримується відповідно до README проекту. Замість цього він рекомендує книжкову полицю і sequelize


27
Виходячи з документів, схоже, що Sequelize набагато випереджає цей проект.
Тоні О'Хаган

Це ще один чудовий варіант для людей, які шукають mysql ORM. Синтаксис складніший, але і приємний.
dresende

2
проект змінив URL-адресу: github.com/dresende/node-orm2
Capy

Я отримую цю помилку "Помилка. Неможливо знайти модуль" капелюх ", коли я намагаюся розгорнути цю функцію. .. не здається, що жодна кількість встановлення або повторної установки npm не допомагає. Будь-які пропозиції? Спасибі
Джин Бо

1
Вузол або m2 більше активно не підтримується. Він посилається на sequelize та bookshelf.js.
seebiscuit

150

Я б вибрав Sequelize через відмінну документацію. Це просто чесна думка (я ніколи не дуже багато використовував MySQL з Node).


10
Я також хотів би зазначити, що node-orm2 або persistent.js не забезпечують механізму міграції. persistent.js не підтримує постгреси. секелізує робить обидва ці речі.
airtonix

4
Я використав node-orm2, і завдяки кращій документації Sequelize мені вдалося отримати його набагато простіше
Майкл Дж. Калкінс

2
@Gelidus Де ви взяли цю інформацію?
Вільям Лепінський

14
На жаль, нещодавно документація Sequelize стала жахливою. Я почав використовувати Sequelize нещодавно і був дуже задоволений документами. Тепер це автоматично створена купа зламаних посилань, застарілої інформації та неповних прикладів. Я все одно буду дотримуватися цього, хоча. Це не так важко навчитися.
Бред

2
Щойно видалив мій старий коментар, і я на 100% згоден з @Brad, на жаль :(
Андрій Попов

19

Спочатку зауважте, що я жодного з них не використовував (але використовував Node.js).

Обидві бібліотеки зафіксовані досить добре і мають стабільний API. Однак, як видається, persistence.js використовується в більшій кількості проектів . Я не знаю, чи всі вони все ще користуються цим.

Розробник секселізує іноді блоги про це на blog.depold.com . Коли ви хочете використовувати первинні ключі як сторонні ключі, вам знадобиться патч, описаний у цій публікації блогу . Якщо ви хочете допомогти для persistent.js, існує група google, присвячена їй.

З прикладів, з яких я розумію, що sequelize трохи більше схожий на JavaScript (більше цукру), ніж persistance.js, але має підтримку меншої кількості сховищ даних (лише MySQL, тоді як persistance.js навіть може використовувати магазини в браузері).

Я думаю, що секвелізація може стати для вас способом, оскільки вам потрібна лише підтримка MySQL. Однак якщо вам потрібні зручні функції (наприклад, пошук) або ви хочете пізніше використовувати іншу базу даних, вам потрібно буде використовувати persistent.js.


1
Схоже, persistentjs.org зараз вказує на якийсь небажаний сайт, працює тільки GitHub
sansknwoledge

10

Однією з головних відмінностей між Sequelize та Persistence.js є те, що перший підтримує STRINGтип даних, тобто VARCHAR(255). Я почував себе незручно робити все TEXT.


7
В даний час Persistence.js також підтримує VARCHAR.
alehro

8
У таких базах даних, як PostgreSQL, TEXT і VARCHAR абсолютно однакові, різниця полягає лише в тому, що якщо ви поставите ліміт байтів (VARCHAR (255)), то у вас є накладні витрати для перевірки ліміту. У використанні TEXT для всього в PostgreSQL абсолютно немає проблем.
переписано

3
Використання TEXT у PostgreSQL насправді є кращою практикою, навіть якщо вона не є портативною.
ковбер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.