Событие изменения модели на стороне сервера в DerbyJS 0.6

В DerbyJS:

Как добавить прослушиватели событий в "Модель", только на стороне сервера, без необходимости полагаться на запросы (промежуточное программное обеспечение Express)?

Связанный вопрос, который я нашел: Как создать серверную логику приложения на Racer / DerbyJS?

Конечно, я могу написать экспресс промежуточное ПО. Но "общая" модель данных очень пригодилась бы, если бы я мог получить к ней доступ, не полагаясь на запрос, и я не знаю, как это сделать, не помещая конкретный код в общую кодовую базу.

Вариант использования: обработка заказа для программного обеспечения электронной коммерции

Моя модель может быть такой:

{
  orders: [ {
    id: '1',
    products: [ ... ],
    user: [ ... ],
    token: 'stripe credit card token I get from Client here'
  }, {
    ...
  } ]
}

Таким образом, клиент может размещать новые заказы, делая

model.at('orders').add(myOrder);

И сервер может обработать это, слушая 'insert' События:

model.on('insert', 'orders', function(captures, index, newOrders) {
  newOrders.forEach(processOrder);
})

1 ответ

Решение

Да, ты можешь!!:)

У вас есть 2 варианта.

Опция 1)

Используйте app.serverUse, чтобы включить серверный скрипт, или используйте store.js, если вы использовали derby-generator. Там можно:

var model = dbStore.createModel();
model.subscribe("orders", function(){
  model.on("insert", "orders.**", function() {
   ...
  });
});

Вариант 2)

Используя https://github.com/derbyparty/derby-hook

dbStore.hook('create', 'orders', function(id, doc, session, backend) {
  var model = dbStore.createModel();
  var $order = model.at('orders.'+ id);
   ...
});
Другие вопросы по тегам