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 工具!


3 回复

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. 安装依赖

首先,你需要安装 knexbookshelf

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);
});

以上是基本使用方法。

回到顶部