Nodejs + MySQL 数据库 大家用的都是什么 ORM 框架?

Nodejs + MySQL 数据库 大家用的都是什么 ORM 框架?

1、Node.js + MySQL 数据库 大家用的都是什么 ORM 框架?本来准备用 MySQL 原生查询的,但是返回的结果集封装起来太麻烦,还是想用一下 ORM。 2、npm install orm 失败,提示 npm ERR! not found: git, 有人遇到过吗?求解答

16 回复

Node.js + MySQL 数据库 大家用的都是什么 ORM 框架?

问题背景

在开发 Node.js 应用时,我们常常需要与数据库进行交互。虽然使用原生 SQL 查询非常灵活,但结果集的封装和处理会变得繁琐。因此,ORM(对象关系映射)框架应运而生,它可以帮助开发者更方便地操作数据库,提高开发效率。

常用的 ORM 框架

目前,Node.js 生态系统中常用的 ORM 框架有以下几种:

  1. Sequelize
  2. Mongoose (主要针对 MongoDB,但也可以考虑)
  3. Bookshelf

示例代码:使用 Sequelize

这里以 Sequelize 为例,展示如何配置和使用 ORM 框架。

安装 Sequelize
npm install sequelize
npm install --save mysql2
配置 Sequelize
const { Sequelize } = require('sequelize');

// 创建一个新的 Sequelize 实例
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'
});

// 测试连接
(async () => {
  try {
    await sequelize.authenticate();
    console.log('Connection has been established successfully.');
  } catch (error) {
    console.error('Unable to connect to the database:', error);
  }
})();
定义模型
const User = sequelize.define('User', {
  // 定义模型属性
  name: {
    type: Sequelize.STRING,
    allowNull: false
  },
  email: {
    type: Sequelize.STRING,
    unique: true
  }
}, {
  // 其他模型选项
});
使用模型
// 创建一条记录
async function createUser(name, email) {
  const user = await User.create({
    name: name,
    email: email
  });
  console.log(user.toJSON());
}

// 查询所有用户
async function getAllUsers() {
  const users = await User.findAll();
  console.log(users.map(u => u.toJSON()));
}

关于 npm ERR! not found: git 的解决方案

如果您在安装某些依赖包时遇到 npm ERR! not found: git 错误,这通常是因为您的环境中没有安装 Git。您可以尝试以下步骤来解决这个问题:

  1. 安装 Git:sudo apt-get install git
  2. 确保 Git 已正确安装并添加到 PATH 中。
  3. 重新运行 npm install 命令。

希望这些信息对您有所帮助!


orm2不错的

用nosql,MongoDB

+1 不用很复杂的联表一般没什么问题了…

给个案例给你 前端乱炖就是用 sequelize http://www.html-js.com/

MongoDB 不是万金油…

sequelize 还可以直接执行sql

事务这样用起来还是不太方便

onela.js 是基于node.js的高弹性ORM框架

  • 无SQL编程,前端也能写后端
  • 多实例数据库同时加载,跨库操作
  • 只支持本地事务,单个数据库实例中可以实现事务
  • 目前支持mysql、PostgreSQL,MMSQL,SQLite数据库。

onela官网:https://onela.cn/

github:https://github.com/zouwei/onela 项目开源的onela-tools代码机器人,还有onela-demo项目,超快速搭建,高弹性项目扩展。

onela.js技术交流群

waterline 文档太差, 只能看 sails 的, 对于 mysql 不支持事务, update 对应 select / update / select 三条SQL等等问题… 不建议使用

谢楼上,是的。刚才没注意看,发现第一个是for sql,第二个for nosql

之前一直用waterline, 最后因为事务的问题,还有性能的问题,还有关联操作的坑(不知道现在填上了没有)

最后我们团队几个人一合计,自己写了一个,语法给waterline类似,利用knexjs实现,供参考ThinkORM,欢迎star啊

挖坟一下,大家现在觉得哪个更好用

Node.js + MySQL 数据库 大家用的都是什么 ORM 框架?

对于 Node.js 和 MySQL 的组合,有几个流行的 ORM(对象关系映射)框架,它们可以帮助你更方便地操作数据库,避免直接写原生 SQL 查询。

常见的 ORM 框架

  1. Sequelize

    • 优点:功能强大,支持事务、联表查询等复杂操作。
    • 缺点:配置稍微复杂一些。
  2. Mongoose

    • 优点:专为 MongoDB 设计,但也有插件可以用于 MySQL。
    • 缺点:虽然有插件支持 MySQL,但社区和官方支持不如针对 MongoDB 强。
  3. Bookshelf

    • 优点:基于 Knex.js,提供了简单易用的 API。
    • 缺点:文档相对较少,社区活跃度较低。
  4. Knex.js

    • 优点:轻量级查询构建器,可以作为 ORM 使用。
    • 缺点:需要自己封装数据模型。

示例代码:使用 Sequelize

Sequelize 是一个非常流行的选择。以下是一个简单的示例,展示如何使用 Sequelize 连接 MySQL 数据库并进行基本的操作:

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'
});

// 定义模型
const User = sequelize.define('User', {
  name: {
    type: DataTypes.STRING,
    allowNull: false
  },
  age: {
    type: DataTypes.INTEGER
  }
}, {
  timestamps: false // 禁用自动创建的 `createdAt` 和 `updatedAt` 字段
});

// 同步数据库
async function syncDatabase() {
  try {
    await sequelize.sync();
    console.log('数据库同步成功');
  } catch (error) {
    console.error('数据库同步失败:', error);
  }
}

syncDatabase();

// 创建用户
async function createUser(name, age) {
  const user = await User.create({
    name,
    age
  });
  console.log('用户已创建:', user.toJSON());
}

createUser('John Doe', 30);

关于 npm install orm 失败的问题

你提到的错误 npm ERR! not found: git 通常是由于缺少 Git 导致的。你可以尝试以下步骤解决这个问题:

  1. 安装 Git

    • 在 Windows 上,你可以从 Git 官网 下载并安装。
    • 在 macOS 上,你可以通过 Homebrew 安装:brew install git
    • 在 Linux 上,你可以通过包管理器安装:sudo apt-get install git
  2. 重新安装 ORM: 安装完 Git 后,重新运行 npm install orm 应该就可以正常工作了。

希望这些信息对你有帮助!

回到顶部