项目结构图:
1、安装knex和bookshelf
npm install knex;
npm install bookshelf;
2、创建bookshelf实例
var knex = require('knex'), db; // 数据库连接 // 数据库连接配置 var config = { client: 'mysql', // 其他可以是pg、sqlite3 connection: { host:'127.0.0.1', user:'root', password:'123456', database:'databaseName', // 数据库名称 charset: 'utf8' } }; // 保证数据库连接只初始化一次。 if (!db) { db = knex(config); } var bookshelf = require('bookshelf')(db); module.exports = bookshelf;
3、创建数据库和对象映射关系
var bookshelf = require("../dao/db"); var User = bookshelf.Model.extend({ tableName: "user", }); var model = {}; model.User = User; module.exports = model;
4、查询一张表全部数据
models.User.forge().fetchAll().then(function(user){ console.log(user.models); res.render("list",{rows:user.models}); });
5、根据条件查询数据
models.User.forge({ id: req.params.id }).fetch().then(function(user) { console.log(user); res.render("updata",{user:user}); });
6、更新数据
models.User.forge().where('id', '=', id).save( { id: req.fields.id, user_cn_name: req.fields.name, user_age: req.fields.age, user_idcard: req.fields.idcard, }).then(function(reslut) {
res.render("updata",{user:reslut});}). catch( function(err) { console. log(err); });
7、删除数据
models.User.forge().where('id', '=', req.params.id).destroy().then(function(result) {
res.render("updata",{user:reslut});}). catch( function(err) { console. log( 4);});
8、官网显示可以实现事务管理,经测试并没实现,不知错在何处(还请实现的朋友指导一下)
bookshelf.transaction(function(){
models.User.forge().where('id', '=', req.params.id).destroy().then(function(result){ models.Pet.forge().where('pet_manger', '=', req.params.id).destroy().then(function(result) { res.redirect("/list"); }).catch(function(err) { console.log(5); }); }).catch(function(err) { console.log(4); });}). then( function(users){ console. log( 1);}). catch( function(error){ res. redirect( "/list"); console. log( 2);});