Javascript Koa:在没有现有包装器的情况下,连接到数据库最明智的方法是什么? 我对膝关节炎和膝关节炎非常陌生,请原谅我的愚蠢。
我不确定我是否把事情搞砸了。但我想使用膝关节炎与OrrutDB。我可以使用Oriento(节点模块)连接到OrientDB。我想使用膝关节炎的发电机的功率。< /P> 因为我的OrientDB数据库中的数据与我在应用程序中使用的对象相关,所以我想实现模型(当然)。所以我想连接到数据库的部分会用到这一点 假设我有一个名为“Task”的模型,那么我希望它公开几个方法和getter/setter。所以Task.find();应该从OrientDB数据库获取所有任务 据我所知,我会在中间件堆栈中的某个地方挂接它。如果我可以使用生成器,让中间件使用yield等待数据返回,那就太好了。一些错误处理也会很好 尽管如此:Javascript Koa:在没有现有包装器的情况下,连接到数据库最明智的方法是什么? 我对膝关节炎和膝关节炎非常陌生,请原谅我的愚蠢。,javascript,node.js,orientdb,koa,oriento,Javascript,Node.js,Orientdb,Koa,Oriento,我不确定我是否把事情搞砸了。但我想使用膝关节炎与OrrutDB。我可以使用Oriento(节点模块)连接到OrientDB。我想使用膝关节炎的发电机的功率。< /P> 因为我的OrientDB数据库中的数据与我在应用程序中使用的对象相关,所以我想实现模型(当然)。所以我想连接到数据库的部分会用到这一点 假设我有一个名为“Task”的模型,那么我希望它公开几个方法和getter/setter。所以Task.find();应该从OrientDB数据库获取所有任务 据我所知,我会在中间件堆栈中的某个地
- 我的假设正确吗?还是有更好的办法李>
- 我必须自己做吗?还是说我缺少了促进我成为什么样的人的模块 计划李>
- 开始学习如何正确地做这样的事情有什么好处
- 我是否应该看看现有的mongodb/mysql/包装器并从中抽象出来
谢谢 我从未使用过orient db,但查看github页面,它似乎提供了一个连接池并返回了承诺。基于此,我会这样做:
// in utils/oriento.js or similar
// instantiate it once and share in multiple places(models), since it offers
// connection pooling
var Oriento = require('oriento');
var server = Oriento({
host: 'localhost',
port: 2424,
username: 'root',
password: 'yourpassword'
});
var db = server.use({
name: 'mydb',
username: 'admin',
password: 'admin'
});
module.exports = db;
然后,对于模型:
// models/item.js
var db = require('../utils/oriento.js');
var Item = function(props){
};
Item.findById = function(id){
// db.query returns a promise
return db.query('select from OItem where id=:id', {
params: {
id: id
},
limit: 1
});
}
// add getters, setters, find etc...
module.exports = Item;
然后在控制器中:
// server.js or wherever
var Item = require('./models/item');
app.get('/:id', function *(){
var id = this.params.id;
this.body = yield Item.findById(id);
}
希望这能有所帮助
您可能想在James上查看我在koajs上的屏幕广播,但这不包括打开/关闭多个连接。