gpt4 book ai didi

javascript - Koa:在没有现有包装器的情况下连接到数据库最明智的方法是什么?

转载 作者:行者123 更新时间:2023-11-30 17:08:40 26 4
gpt4 key购买 nike

我是 node 和 koa 的新手,所以请原谅我的愚蠢。

我不确定我是否搞砸了。但我想将 Koa 与 OrientDB 一起使用。我可以使用 Oriento(Node 的模块)连接到 OrientDB。我想使用 Koa 生成器的力量。

由于我的 OrientDB 数据库中的数据与我在我的应用程序中使用的对象相关,我想实现模型(当然)。所以我想连接到数据库的部分会涉及到这一点。

假设我有一个名为“Task”的模型,然后我希望它公开几个方法和 getter/setter。所以 Task.find();应该从 OrientDB 数据库中获取所有任务

据我所知,我会将其挂接到中间件堆栈中的某处。如果我可以使用生成器让我的中间件等待直到它使用 yield 取回数据,那就太好了。一些错误处理也会很好......

综上所述:

  • 我的假设是否正确?或者,还有更好的方法?
  • 我必须自己做吗?或者我是否缺少促进我现在的模块规划?
  • 什么是开始学习如何正确地做这样的事情的好点?
  • 我是否应该只查看现有的 mongodb/mysql/whatever 包装器并从中抽象出来?

谢谢!

最佳答案

我从未使用过 orient-db,但查看 github 页面它似乎提供了一个连接池并返回 promise 。基于此,我会做这样的事情:

// 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;

然后在 Controller 中:

// 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 上的截屏视频

关于javascript - Koa:在没有现有包装器的情况下连接到数据库最明智的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com