项目地址: https://github.com/RobinQu/datastackmysql
对开发者友好的轻量级RESTful中间件,基于koa。git
我会陆续放出一下tutorials,这篇文章纯属datastack 101,但愿勾起你们的兴趣。github
var datastack = require("datastack"), koa = require("koa"); var app = koa(); datastack(app, { storage: { type: "mongodb", uri: "mongodb://127.0.0.1:27017/zoo" } }); app.resource("cats"); app.resource("dogs"); app.listen(porcess.env.PORT || 8888);
https://github.com/RobinQu/datastack/blob/master/spec/ws_subscription_spec.jsredis
datastack自带的组件便可实现将事件的CRUD操做经过广播,在客户端:sql
var client = new Websocket("ws://localhost:8888/books/_subscription"); client.on("message", function(data) { //json encoded string var event = JSON.parse(data); // event.type === "datastack:create" // event.data === `storeKey`s of created records });
经过datastack的notifier体系,能够轻松接驳Apple APN、Google Push Service,或者其余的sass服务(Mailgun、Urban Airship等),让你快速实现简洁的消息体系。mongodb
默认是利用mongo的,但相信不是每一个人都喜欢mongo。事实上,经过实现本身的Storage
类,你能够接入任何持久化方案。json
例如,为测试而写的MemoryStore
: https://github.com/RobinQu/datastack/tree/master/src/storage/memory缓存
只需在建立datastack
时给定storage
属性,sass
var koa = require("koa"), datastack = require("datastack"), MySuperStorage = require("my-super-storage"); var app = koa(); datastack(app, { storage: new MySuperStorage() });
尽管datastack
中大部分的组件均可以利用mixin的方式应用到原生的koa应用实例上,咱们也提供一个koa的子类StackApp
,它有以下优点:安全
一个简单的例子:
var datastack = require("datastack"); var app = datastack.app({ storage: { type: "mongodb", uri: "mongodb://127.0.0.1:27017/datastack-test" } }); app.resource("book"); app.resource("author"); var port = process.env.PORT || 8888; app.listen(port, function() { console.log("server is up and running"); });
这是一个基于recluster 的封装。假如用到了datastack中的一些高级功能(事件订阅)等,不可避免的涉及到事件在cluster之间同步等问题。而集群之
间的问题,远远不止这一个。StackCluster
是为了解决这些目前我碰到的一些问题,以及将来架构中可能出现的问题而准备的,推荐使用。
一个完整的例子: https://github.com/RobinQu/datastack/tree/master/example/cluster
其实在koa出来以后就在计划这个,可是写的好没动力。目前大部分架构已完成,如今的任务:
datastack
已经在个人我的项目中使用,但数量级还不够证实它的稳定性。