我对节点& koa,请原谅我的愚蠢。
我不确定我是否搞砸了。但我想将Koa与OrientDB一起使用。我可以使用Oriento(Node的模块)连接到OrientDB。而且我想使用Koa发电机的强大功能。
由于我的OrientDB数据库中的数据与我在我的应用程序中使用的对象有关,我想实现模型(当然)。所以我想连接到数据库部分会进入那个。
假设我有一个名为“Task”的模型,那么我希望它公开一些方法和getter / setter。所以Task.find();应该从OrientDB数据库获取所有任务
据我所知,我会把它挂在中间件堆栈的某个地方。如果我可以使用生成器以便我的中间件等待直到它使用yield来获取数据,这将是很好的。一些错误处理也会很好......
尽管如此:
谢谢!
答案 0 :(得分:2)
我从来没有使用过orient-db,但是看看github页面看起来它提供了一个连接池并返回了promises。基于此我会做这样的事情:
// 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);
}
希望这会有所帮助
您可能希望在http://knowthen.com
上查看koajs上的截屏视频