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

Server-side model change event in DerbyJS 0.6

在 DerbyJS 中:

如何仅在服务器端向 "The Model" 添加事件侦听器,而不必依赖请求(快速中间件)?

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

我当然可以写一个express中间件。但是 "shared" 数据模型会非常方便,如果我可以访问它而不必依赖请求,我不知道如何在不必将特定代码放入 共享代码库

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

我的模型可能是这样的:

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

是的,你可以!! :)

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