如何使用枪作为快速路线?
我正在尝试在express / node项目中使用gun,但是我想将端点挂载为/db
。 我曾希望下面的代码会工作,但不断得到一个Route.get()需要callback函数的错误:
var express = require('express'); var Gun = require('gun'); var app = express(); var port = 8080; var gun = new Gun({ file: './data.json' }); // mount the gun db server app.get('/db', gun.router); // regular express route app.get('/', function(req, res) { res.send('other stuff...'); }); // start the server app.listen(port, function () { console.log('Web server listening on port ' + port); });
有什么build议么?
多尔蒂!
GUN可以使用快递,但不是快递路线。 例如,让我们先来看看安装了快车的简单枪服务器:
var express = require('express'); var Gun = require('gun'); var app = express(); app.use(Gun.serve).use(express.static(__dirname)); var server = app.listen(80); Gun({file: 'data.json', web: server});
( https://github.com/amark/gun/blob/master/examples/express.js )
GUN的API现在在浏览器中可用:
<script src="http://YOURSERVER.com/gun.js"></script> <script> var gun = Gun('http://YOURSERVER.com/gun'); gun.get('key').get('hello').put('world!'); gun.get('key').get('hello').on(function(data){ console.log(data) }); </script>
GUN 不可用作快速路线。 例如, 这不起作用 :
http://YOURSERVER.com/data/key/hello?put=world!
为什么?
GUN是一个实时数据库 ,如果你使用REST或CRUD路由作为它的API,那么你就失去了实时的能力 。 这意味着你将不得不编写自己的定制长轮询实现,这就违背了快速路由的要点。
我明白,但我仍然想要一个REST或CRUD API的GUN?
创build代理枪的HTTP路由应该不难。 这里有一些应该帮助你开始的伪代码 。 如果你构build它,请把它设置为NPM上的开源模块,这样其他人就可以享受它!
// this is pseudocode!!! app.get('/data', (req, res) => { path(req).val(data => res.send(data)) }); app.put('/data', (req, res) => { path(req).put(req.param.put, ack => { res.ack? 0 : res.ack = res.send(ack) }) }); var path = (req) => { var ref = gun; req.path.split('/').forEach(key => ref = ref.get(key)); return ref; }
让我们知道,如果你build立它! 社区聊天室一如既往的友善和活跃。 在那里寻求帮助,在这里提问。 感谢使这个问题!