nodejs之ORM关系框架Bookshelf

隐身守侯 提交于 2019-12-05 14:19:24

项目结构图:


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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!