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

在DerbyJS:

如何将事件侦听器添加到“The Model”,只有服务器端,而不必依靠请求(Express Middleware)?

相关问题我发现: 如何在Racer / DerbyJS上创build服务器端应用程序逻辑?

当然,我可以写一个快递中间件。 但是如果我可以在不依赖请求的情况下访问数据模型,那么“共享”数据模型将非常有用,而且我不知道如何做到这一点,而不必将特定代码放入共享代码库中

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

我的模型可能是这样的:

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