首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js数据库的抽象层

Node.js数据库的抽象层
EN

Stack Overflow用户
提问于 2012-04-10 23:49:18
回答 2查看 18.4K关注 0票数 17

我一直在寻找简单的数据库抽象实现,然后我找到了一篇很棒的文章http://howtonode.org/express-mongodb,它很老了,但我仍然喜欢这个想法。

嗯,也许是构造,可以使用某种带有数据库设置的对象文字。因此,主要思想是可以有不同的UserService-s实现,但是位于不同的目录中,并且只需要所需的一个。

代码语言:javascript
复制
/data-layer/mongodb/user-service.js
                   /post-service.js
                   /comment-service.js

/data-layer/couchdb/user-service.js
                   /post-service.js
                   /comment-service.js

当需要数据库时,我将使用var UserService = require(__dirname + '/data-layer/mongodb/user-service).UserService(db); where var db = "open db object"获取它

这是正确的方法吗?或者有更好的解决方案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-23 00:14:52

有几个解决方案,可以通过NPM获得:

  • Node-DBI:"Node-DBI是一个Zend_Db数据库抽象层类库,受到PHP Zend Framework Node API的强烈启发。它通过Adapters类提供了统一的函数来操作多个数据库引擎。目前支持的引擎有mysql、mysql-libmysqlclient和sqlite3。“看起来开发已经被paused.
  • Accessor了:“一个数据库包装器,提供对数据库的简单访问。”在moment.
  • Activerecord上只支持MySQL和MongoDB:“一种用Coffeescript编写的对象关系映射,支持多种数据库系统(SQL、NoSQL,甚至是REST),以及ID生成中间件。它完全可扩展,可以添加新的数据库系统和插件。”
票数 14
EN

Stack Overflow用户

发布于 2015-06-26 16:44:00

更新

自从我发布了这个答案后,我放弃了mongoose,转而使用official MongoDB NodeJS Drivers,因为它非常直观,而且更忠于NoSQL数据库的概念。

原始答案

我想可能是时候更新一个老问题的答案了:

如果您想使用MongoDB作为您的document-oriented databasemongoose是一个很好的选择,并且易于使用(来自官网的示例):

代码语言:javascript
复制
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

var Cat = mongoose.model('Cat', { name: String });

var kitty = new Cat({ name: 'Zildjian' });
kitty.save(function (err) {
  if (err) // ...
  console.log('meow');
});

对于一种相当现代的方法来说,Mongorito是一个很好的ODM,它使用ES6生成器而不是回调。

在06.2015版本中,我认为对于包含Node.js/io.js的SQL数据库来说,最好的ORM是支持以下数据库的Sequelize

  • PostgreSQL
  • MySQL
  • MariaDB
  • SQLite
  • MSSQL

设置为fairly easy

代码语言:javascript
复制
var sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'
});

// Or you can simply use a connection uri
var sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname');

它还提供了transactionsmigrations和许多其他功能。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10092050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档