如何使用枪作为快速路线?

我正在尝试在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立它! 社区聊天室一如既往的友善和活跃。 在那里寻求帮助,在这里提问。 感谢使这个问题!