DerbyJS 0.6中的服务器端模型更改事件

时间:2015-02-18 15:38:34

标签: node.js derbyjs racerjs

在DerbyJS中:

如何向“模型”添加事件侦听器,只有服务器端,而不必依赖请求(表达中间件)?

相关问题我发现: How to create server-side application logic on Racer / DerbyJS?

当然我可以写一个快速中间件。但是如果我可以在不必依赖请求的情况下访问它,那么“共享”数据模型会非常方便,而且我不知道如何在不必将特定代码放入共享代码库< / em>的。

使用案例:电子商务软件的订单处理

我的模型可能是这样的:

{
  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 个答案:

答案 0 :(得分:2)

是的,你可以!! :)

您有2个选项。

选项1)

使用app.serverUse包含服务器端脚本,或者如果您使用过yo derby-generator则使用store.js。在那里你可以:

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);
   ...
});