Sequelize REST API-генератор

Я разрабатываю приложение Nodejs, а моя база данных - Postgres, и я использую Sequelize как свой ORM из-за его превосходной поддержки миграции.

Я нахожусь в поиске хорошего генератора REST API на основе той схемы, которую я определил. Есть два основных препятствия, с которыми я столкнулся, и они состоят в том, что генераторы не делают хорошую работу по созданию маршрутов API ассоциации и отсутствию поддержки ACL. На фронте ассоциаций моя схема имеет несколько уровней ассоциации, например, например.

Student.hasMany(Courses);
Courses.hasMany(Subjects);

Таким образом, созданный REST API должен быть чем-то вроде

/student/:student_id/course/:course_id/subject/:subjectId

Я нашел несколько проектов, которые делают это, но являются неполными.

Есть ли какой-нибудь модуль, который поддерживает это?

Ответ 1

Я бы рекомендовал restify Его довольно простая настройка и маршрутизация довольно просты в управлении.

Что-то вроде следующего заставляет вас начать.

server.get( '/student/:student_id/course/:course_id/subject/:subjectId', function(req, res, next) {
    Subjects.find({
        where: {
            'id': req.params.subjectId,
            'courses.id': req.params.course_id,
            'student_id.id': req.params.student_id
        },
        include: [{
            model: Courses,
            include: [{
                model: Student
            }]
        }]
    }).success(function(results) {
        console.log(results);
    });
});

Вы также можете сократить количество маршрутов, которые вам нужно написать, с чем-то вроде этого. Лично я бы не рекомендовал его, так как вы жертвуете ясностью и гибкостью ради какой-то типизации.

var models = {
    'subjects': Subjects,
    'courses': Courses,
    'students': Students
};

server.get( '/:model/:id', function(req, res, next) {
    models[req.params.model]
        .find(req.params.id)
        .success(function(results) {
            console.log(results);
        });
});