Nodejs ORM框架bookshelf的使用
Nodejs ORM框架bookshelf的使用
Bookshelf.js 是一个基于 Knex.js 的 Node.js ORM 框架,它提供了对数据库表的高级抽象。下面是一些基本的使用示例,包括如何设置 Bookshelf 以及一些常见的操作。
1. 安装依赖
首先,你需要安装必要的库:
npm install bookshelf knex sqlite3
这里我们以 SQLite 为例,但你也可以选择其他支持的数据库系统。
2. 初始化 Bookshelf
创建一个文件(例如 db.js
),用于初始化 Bookshelf 和 Knex:
const knex = require('knex')({
client: 'sqlite3',
connection: {
filename: "./mydb.sqlite"
},
useNullAsDefault: true,
});
const bookshelf = require('bookshelf')(knex);
module.exports = bookshelf;
3. 创建模型
接下来,定义你的数据模型。每个模型都是 Bookshelf.Model 的子类。
const bookshelf = require('./db');
class User extends bookshelf.Model {
get tableName() { return 'users'; }
}
module.exports = User;
4. 基本操作
创建记录
const User = require('./models/User');
User.forge({ name: 'John Doe' }).save()
.then(user => console.log('Created user:', user))
.catch(err => console.error('Error creating user:', err));
查询记录
const User = require('./models/User');
User.where({ id: 1 }).fetch()
.then(user => console.log('Fetched user:', user))
.catch(err => console.error('Error fetching user:', err));
更新记录
const User = require('./models/User');
User.where({ id: 1 }).fetch()
.then(user => user.save({ name: 'Jane Doe' }))
.then(updatedUser => console.log('Updated user:', updatedUser))
.catch(err => console.error('Error updating user:', err));
删除记录
const User = require('./models/User');
User.where({ id: 1 }).fetch()
.then(user => user.destroy())
.then(() => console.log('Deleted user'))
.catch(err => console.error('Error deleting user:', err));
5. 关联模型
Bookshelf 支持多种关系,如一对一、一对多和多对多。
一对多关系
假设我们有一个 Post
模型,每个 User
可以有多个 Post
。
const bookshelf = require('./db');
class User extends bookshelf.Model {
posts() {
return this.hasMany(Post);
}
}
class Post extends bookshelf.Model {
user() {
return this.belongsTo(User);
}
}
module.exports = { User, Post };
然后你可以通过以下方式获取用户的所有帖子:
const { User } = require('./models/User');
User.where({ id: 1 }).fetch({ withRelated: ['posts'] })
.then(user => console.log('User with posts:', user.toJSON()))
.catch(err => console.error('Error fetching user with posts:', err));
这些就是 Bookshelf.js 的基本用法。希望这能帮助你开始使用这个强大的 ORM 工具!
Bookshelf.js 是一个非常优雅的 Node.js ORM(对象关系映射)库,基于 Knex.js 查询构建器。它让数据库操作变得简单且直观。
首先,你需要安装 Bookshelf 和 Knex:
npm install bookshelf knex --save
然后,初始化 Knex:
const knex = require('knex')({
client: 'mysql', // 或其他数据库
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'password',
database : 'myapp_test'
}
});
接着,创建 Bookshelf 实例并关联 Knex:
const bookshelf = require('bookshelf')(knex);
现在你可以定义模型了:
const User = bookshelf.Model.extend({
tableName: 'users'
});
保存数据:
new User({ name: 'John Doe' }).save().then(user => console.log(user));
查询数据:
User.where('name', 'John Doe').fetch().then(user => console.log(user));
就这样,你已经可以开始使用 Bookshelf 进行基本的数据库操作了!别忘了处理错误和使用事务来保证数据一致性哦。
Bookshelf.js 是一个基于 Knex.js 的 Node.js ORM 框架,用于简化数据库操作。下面是一个简单的 Bookshelf.js 使用教程。
1. 安装依赖
首先,你需要安装 knex
和 bookshelf
:
npm install knex bookshelf
你还需要安装数据库驱动,例如 PostgreSQL 或 MySQL:
npm install pg knex pg-hstore
# 或者
npm install mysql2
2. 配置数据库连接
创建一个文件(例如 db.js
),用于配置数据库连接和初始化 Bookshelf:
const knex = require('knex')({
client: 'pg', // 或 'mysql'
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'password',
database : 'myapp_test'
}
});
const bookshelf = require('bookshelf')(knex);
module.exports = bookshelf;
3. 创建模型
接下来,创建一些模型(例如 User.js
):
const bookshelf = require('./db');
class User extends bookshelf.Model {
get tableName() {
return 'users';
}
posts() {
return this.hasMany(Post);
}
}
class Post extends bookshelf.Model {
get tableName() {
return 'posts';
}
user() {
return this.belongsTo(User);
}
}
module.exports = { User, Post };
4. 基本操作
插入数据
const { User } = require('./models/User');
User.forge({ name: 'Alice' })
.save()
.then(user => console.log(`New user created with id ${user.get('id')}`))
.catch(console.error);
查询数据
const { User } = require('./models/User');
User.where({ id: 1 })
.fetch()
.then(user => console.log(user.get('name')))
.catch(console.error);
更新数据
const { User } = require('./models/User');
User.where({ id: 1 })
.save({ name: 'Bob' })
.then(() => console.log('User updated'))
.catch(console.error);
删除数据
const { User } = require('./models/User');
User.where({ id: 1 })
.destroy()
.then(() => console.log('User deleted'))
.catch(console.error);
5. 关联操作
const { User, Post } = require('./models/User');
// 创建用户和帖子
User.forge({ name: 'Charlie' }).save().then(user => {
Post.forge({ title: 'My First Post', content: 'Hello World', userId: user.id }).save();
});
// 获取用户及其所有帖子
User.where({ id: 1 })
.fetch({ withRelated: ['posts'] })
.then(user => console.log(user.related('posts').toJSON()))
.catch(console.error);
这些基本的操作应该能帮助你开始使用 Bookshelf.js 进行数据库操作。希望这对你有帮助!
Bookshelf.js 是一个基于 Knex.js 的 Node.js ORM 框架。使用时,首先安装 Bookshelf 和 Knex:
npm install bookshelf knex --save
然后配置 Knex 并实例化 Bookshelf:
const knex = require('knex')({
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'password',
database : 'myapp_test'
}
});
const bookshelf = require('bookshelf')(knex);
定义模型并操作数据库:
const User = bookshelf.model('User', {
tableName: 'users'
});
new User({id: 1}).fetch().then(function (model) {
console.log(model.attributes);
});
以上是基本使用方法。