Ответ 1
Я думаю, вы можете использовать Sequelize, который действительно вдохновлен ActiveRecord. Возможно, вам также понадобится использовать пакет Migrat, который выглядит как действительно хороший инструмент миграции
Я из мира Ruby, начал изучать Express js, есть ли Rails ActiveRecord Migrations тип библиотеки в Node/ExpressJs?
Я думаю, вы можете использовать Sequelize, который действительно вдохновлен ActiveRecord. Возможно, вам также понадобится использовать пакет Migrat, который выглядит как действительно хороший инструмент миграции
Из быстрого поиска Google я вытащил четыре разных пакета/библиотеки, которые вы могли бы попробовать:
Я думаю, вы должны использовать Sequelize, синтаксис очень прост и кривая учится быстро. Вот те же самые образцы того, как определить модель в sequelize:
const User = sequelize.define('user', {
username: { type: Sequelize.STRING, allowNull: false },
password: { type: Sequelize.STRING, allowNull: false },
admin: { type: Sequelize.BOOLEAN, defaultValue: false }
});
После того, как вы вызовете свой код, метод sync()
Sequelize будет CREATE TABLE IF NOT EXISTS
все ваши модели, добавляющие id
(который вы также можете изменить), created_at
и updated_at
(timestamps), и вы можете делать такие звонки:
sequelize.sync()
.then(() => User.create({
username: 'administrator',
password: 'yahoo',
admin: true
}))
.then(userCreated => {
console.log(userCreated.toJSON());
});
Вы можете создавать очень сложные запросы с небольшим кодом и смешивать их с express.js для ответа на ваши клиенты, например:
User.findAll({
where: {
[Op.iLike] : { username: 'Jack%' },
admin: true
}
}).then(usersList => {
if (!usersList) {
response.status(404).json({ error: 'not found' });
return null;
}
for (var i = 0; i < usersList.length; i++) {
usersList[I].something = 42;
}
response.json(usersList);
return null;
});
Это произведет что-то вроде: SELECT "id", "username", "password", "admin", "created_at", "updated_at" WHERE "admin" = true AND "username" ILIKE 'Jack%'
;
Я разработчик Ruby on Rails, и я искал аналогичную структуру на Node.js.
Теперь я использую Sails.js с Waterline, используя PostgreSQL, с библиотекой миграций.
Структура файла почти такая же, как в Rails. Почти так же, как с ActiveRecord. Я очень доволен своей текущей настройкой, прекрасно работает и быстро пылает.
У меня 500 функциональных тестов. Каждый тест имеет много запросов, проходит через 10-20 кланов с множеством обновлений, создания, поиска запросов. С Rails и базой данных PG они будут работать через 10 минут. В базе данных Sails и PG они выполнялись через 2 минуты (или более - у меня была эта настройка). С Sails и MongoDB (я только что перешел с pg на mongo) те же тесты запускаются за 12 секунд!
И у меня все еще есть Rails-подобная файловая система и Waterline, которая похожа на ActiveRecord. Все транзакции, которые я переместил в Redis (это было сложно, но выполняли эту работу).