Событие изменения модели на стороне сервера в 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);
...
});