请问大家在Nodejs中都用的什么orm框架 有推荐吗?
请问大家在Nodejs中都用的什么orm框架 有推荐吗?
用的mysql数据库,准备找个orm框架。 在github上搜了下 貌似orm2,bookshelf,waterline都很受欢迎的样子,大家有啥推荐吗?
3 回复
当然可以!在Node.js生态系统中,ORM(对象关系映射)框架可以帮助你更方便地与数据库进行交互。以下是几种流行的ORM框架及其简要介绍和示例代码。
1. Sequelize
Sequelize 是一个非常强大的 ORM 框架,支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 MSSQL。
安装
npm install sequelize
npm install --save mysql2
示例代码
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
const User = sequelize.define('User', {
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
// allowNull defaults to true
}
}, {
// Other model options go here
});
// 使用 async/await
async function createUser() {
const user = await User.create({
firstName: 'John',
lastName: 'Hancock'
});
console.log(user.get());
}
createUser();
2. Mongoose
Mongoose 是一个专门为 MongoDB 设计的 ORM 框架,如果你使用的是 MongoDB,这是一个不错的选择。
安装
npm install mongoose
示例代码
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true });
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchema);
async function createUser() {
const user = new User({ name: 'John Doe', age: 30 });
await user.save();
console.log(user);
}
createUser();
3. Bookshelf
Bookshelf 是一个基于 Knex.js 的 ORM 框架,支持 MySQL、PostgreSQL 等数据库。
安装
npm install bookshelf knex mysql2
示例代码
const knex = require('knex')({
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'your_database_password',
database : 'myapp_test'
}
});
const bookshelf = require('bookshelf')(knex);
class User extends bookshelf.Model {}
Userforge.define('users', {
name: String,
email: String
});
async function createUser() {
const user = await User.forge({ name: 'John Doe', email: 'john@example.com' }).save();
console.log(user);
}
createUser();
总结
- Sequelize:适合需要跨多种数据库支持的项目。
- Mongoose:专为 MongoDB 设计,简洁易用。
- Bookshelf:基于 Knex.js,轻量且灵活。
根据你的具体需求选择合适的 ORM 框架。希望这些示例代码能帮助你快速上手!
死月自用 toshihiko
在Node.js中使用ORM(对象关系映射)框架可以极大地简化数据库操作。针对MySQL数据库,几个流行的ORM框架包括Sequelize
、Mongoose
(虽然主要是为MongoDB设计的,但也可以用于其他数据库)、Bookshelf
以及Knex
配合objection.js
。
推荐ORM框架
-
Sequelize:
- 它是功能强大的ORM,支持多种数据库(包括MySQL、PostgreSQL、SQLite和Microsoft SQL Server)。
- 拥有良好的文档和社区支持。
- 示例代码:
const { Sequelize, DataTypes } = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); const User = sequelize.define('User', { // 定义模型属性 firstName: { type: DataTypes.STRING, allowNull: false }, lastName: { type: DataTypes.STRING } }, {}); // 同步模型到数据库 (async () => { await sequelize.sync(); console.log('Model synced.'); })();
-
Bookshelf:
- 基于Knex.js构建,支持事务处理和关联查询。
- 更轻量级,适合简单的项目。
- 示例代码:
const knex = require('knex')({ client: 'mysql', connection: { host : '127.0.0.1', user : 'your_database_user', password : 'your_database_password', database : 'your_database_name' } }); const bookshelf = require('bookshelf')(knex); class User extends bookshelf.Model { get tableName() { return 'users'; } } new User().fetch().then(user => console.log(user));
-
Objection.js:
- 是一个现代的,功能丰富的SQL ORM,基于Knex.js构建。
- 提供模型验证,业务规则,插件系统等。
- 示例代码:
const { Model } = require('objection'); class User extends Model { static get tableName() { return 'users'; } } async function main() { const knex = require('knex')({ client: 'mysql', connection: { host : '127.0.0.1', user : 'your_database_user', password : 'your_database_password', database : 'your_database_name' } }); User.knex(knex); const users = await User.query(); console.log(users); }
以上就是对几个ORM框架的简要介绍及示例代码,希望对你有所帮助。