Может ли кто-нибудь помочь мне настроить реляционную схему и выполнять объединения в sails.js?
Как выполнять SQL-соединения и отношения в Sails.js и Waterline?
Ответ 1
Ассоциации официально поддерживаются в Waterline
Обзор
С помощью Sails и Waterline вы можете связать модели с несколькими хранилищами данных. Это означает, что даже если ваши пользователи живут в PostgreSQL, а их фотографии живут в MongoDB, вы можете взаимодействовать с данными, как если бы они жили вместе в одной базе данных. Вы также можете иметь ассоциации, которые охватывают разные соединения (например, хранилища данных/базы данных) с использованием одного и того же адаптера. Это полезно, если, например, вашему приложению необходимо получить доступ к обновленным данным рецепта, хранящимся в базе данных MySQL, в вашем центре данных компании, а также хранить/извлекать данные о компонентах из новой базы данных MySQL в облаке.
Поддерживаемые типы ассоциаций
Запланированные типы ассоциаций
Оригинальное сообщение
Я автор Waterline, ORM, используемый в Sails. Ватерлиния - бренд новый, и мы постоянно добавляем функции. В настоящее время у нас нет поддержка ассоциаций, но следующая в дорожной карте. Мы разработали API для ассоциаций, которые, как мне кажется, понравятся большинству людей. Вы может просматривать текущую работу и предлагаемый API по адресу: [Предлагаемые паруса Ассоциации API] [1].
Мы собираемся заняться Ассоциациями и Сделки дальше и надеемся, что сделайте их готовыми в следующем месяце или около того.
В то же время, если вы используете адаптеры MySQL или PostgreSQL они оба раскрывают метод raw
.query()
, который позволяет вам пройти сделанный вручную sql-запрос и выполненный. Я полностью понимаю это не идеальна, но должна позволять вам продолжать создавать приложение в то время как мы получаем поддержку ассоциаций и объединений.Сигнатура функции для метода запроса:
Model.query(<sql query>, <optional data>, callback);
Ответ 2
Пример из банана частиц, но на самом деле должен использовать "новый", например "var instance = new User._model (values)". Я использую следующий код, и он работает.
Accounts.query(query, function(err, accounts) {
if (err)
return fn(err);
accounts = _.map(accounts, function(account) {
return new Accounts._model(account);
});
fn(null, accounts);
});