2015-06-28 2 views
2

Я разрабатываю приложение, которое полностью основано на API-интерфейсе StrongLoop REST в качестве бэкэнд.Сохранение нескольких моделей одновременно в Strongloop

Существует единая регистрационная форма. Пользователь заполняет личные данные, а также некоторые сведения о компании, для которой он/она работает. Пользователь и компания являются отдельными моделями и имеют отношение «имеет одно».

Каков наилучший способ проверки + сохранения формы для обеих моделей одновременно? (Предпочтительно в один запрос)

Есть несколько вещей, которые сделали бы это возможным, но я не мог найти какие-либо документации об этом, или это своем роде уродливые:

запроса
  • поста, который включает в себя соответствующий модель компании, аналогичная опции фильтра [include], которая существует в запросах GET.
  • Способ получения ошибок проверки без фактического сохранения моделей, поэтому вы можете сохранить всю форму после проверки обеих моделей (однако требуется несколько запросов)
  • Отправляйте всю форму модели пользователя и сохраняйте модель компании сервер.

Любые мысли?

ответ

1

Это достигается с помощью Крючки: Дистанционные крючки и Операция крючки

Дистанционные крючки триггеры, которые вызываются до или после того, как удаленный вызывается.

Операционный крючок запускается из всех методов, которые выполняют определенную высокоуровневую работу по созданию, чтению, обновлению или удалению (CRUD) на высоком уровне. Это все методы PersistedModel, которые наследуют модели приложений. Пример удаленного крючка: это идет в .js часть общего/моделей

Person.afterRemote('create', function (context, Person, cb) { 
     var Role = app.models.Role; 
     var RoleMapping = app.models.RoleMapping; 
     Role.findOne({ 
      where: { 
       name: 'customer' 
      } 
     }, function (err, role) { 
      role.principals.create({ 
        principalType: RoleMapping.USER, 
        principalId: Person.id 
       }, 
       function (err, principal) { 
        if (err) cb(err); 
        ... 
       }); 
     }); 

Пример работа крючки:

Company.observe('after save', function(ctx, next) { 
    console.log('Going to save employee..'); 
    next(); 
}); 
+0

Я знаю крючки, но как именно это будет работать? Должен ли я публиковать атрибуты от пользователя и компании по одному запросу, а затем с помощью крючка сохранить модель компании отдельно? – Arne

+0

Да, так я и мог. Таким образом, только один запрос будет там, и один объект будет сохранен в обратном вызове сохранения другого объекта. –

Смежные вопросы