nodejs mysql ORM

比node-mysql好用多了。

bookshelf

支持restful功能,用到的时候研究下:https://www.sitepoint.com/getting-started-bookshelf-js/

create

// Data其实是一个model
new Data({
'data_name': 'bookshelf',
'data_info': 'info',
'user_id': 1,
'add_time': '2016.07.24',
'is_del': 0
}).save().then(function(model){
console.log(util.inspect({model: model}));
}).catch(function(err){
console.log(err);
});
// Data() 包含参数时,默认为update操作
// 如果想create时,需要把参数写在save中
// 同时插入多条数据

.collection()的参数是:

[{id: 1, name: 'name1'}, {id: 2, name:'name2'}];

endTable.collection(JSON.parse(req.body.e_t)).invokeThen('save', null, {method: 'insert'}).then(function(model){

console.log('success');

console.log(util.inspect({model: model}));

res.send({

"name": '/submit'

})

}).catch(function(err){

console.log('fail');

console.log(err);

res.send({

"name": '/submit'

})

});

select

Data.where('data_id', 1).fetch().then(function(data){
console.log(data.toJSON());
});
Data.where({'data_id': 1, argu2: '123'}).fetch().then(function(data){
console.log(data.toJSON());
});
// Data.fetchAll() new Data({
'data_id': 81
}).fetch().then(function(model){
console.log(model.get('data_name'))
}) // 查询所有的
basemodels.Users.forge().fetchAll().then(function(data){
cb(null, data.toJSON());
})

association 看不懂

transaction 看不懂 http://www.tuicool.com/articles/JjQJv2E

query

User.query('where', 'user_id', '=', 12)
.fetch()
.then(function(model){
console.log(model.get('user_name'));
})
// 多个查询条件 andWhere
User.query({
where: {user_id: 22},
orWhere: {user_name: 'admin'}
})
.fetch()
.then(function(model){
console.log(model.get('user_id'));
})
// 复杂的查询条件
model.query(function(qb) {
qb.where('other_person', 'LIKE', '%Demo').orWhere('other_id', '>', 10);
})
// model.query() : 返回查询构造器

where

// !=
model.where('favorite_color', '<>', 'green')
// ==
model.where('favorite_color', 'red')
// 多个条件
model.where({favorite_color: 'red', shoe_size: 12})

update

new Data().where("data_id", '=', 81).save({
"user_id": 2
}, {patch: true}).then(function(data){
console.log(util.inspect({data: data}));
}).catch(function(err){
console.log(util.inspect({err: err}));
})
// 只更新传递的字段 添加{patch: true}
// 必须要有where

del

new Data().where("data_id", 80).destroy().then(function(data){
console.log(util.inspect({data: data}));
}).catch(function(err){
console.log(util.inspect({err: err}));
})
// 必须要有where

belongsTo

Data.where({'id': 1}).fetch({withRelated: ['user']}).then(function(data){
console.log(data.related('user').toJSON());
})
// data: id, user_id
// user: id
// 表的字段有一定的要求

hasMany

User.where({id: 12}).fetch({withRelated: ['result']}).then(function(user) {
console.log(JSON.stringify(user.related('result')));
});

安装

npm install mysql --save

npm install knex --save

npm install bookshelf --save

ORM要用!但关键部位不能用!

因为对于一般的Web应用开发来说,使用ORM确实能带来上述的诸多好处,而且在大部分情况下涉及不到ORM的不好的地方。但是在系统里面有大数据量、大运算量、复杂查询的地方,就不要用ORM。ORM的性能问题将给你带来灾难。在这些地方就可以使用纯SQL或者其他简单轻量的DB Helper库了。在详细了解ORM之后,你就可以扬长避短让ORM发挥其最大效用了。

bookshelf的更多相关文章

  1. POJ3628 Bookshelf 2(01背包+dfs)

    Bookshelf 2 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8745   Accepted: 3974 Descr ...

  2. Bookshelf 2

    Bookshelf 2 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  3. POJ 3628 Bookshelf 2(01背包)

    Bookshelf 2 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9488   Accepted: 4311 Descr ...

  4. POJ3628:Bookshelf 2【01背包】

    Description Farmer John recently bought another bookshelf for the cow library, but the shelf is gett ...

  5. Node的关系型数据库ORM库:bookshelf

    NodeJs 关系数据库ORM库:Bookshelf.js bookshelf.js是基于knex的一个关系型数据库的ORM库.简单易用,内置了Promise的支持.这里主要罗列一些使用的例子,例子就 ...

  6. POJ 3268 Bookshelf 2 动态规划法题解

    Description Farmer John recently bought another bookshelf for the cow library, but the shelf is gett ...

  7. HOJ-2056 Bookshelf(线性动态规划)

    L is a rather sluttish guy. He almost never clean up his surroundings or regulate his personal goods ...

  8. poj_3628 Bookshelf 2

    Description Farmer John recently bought another bookshelf for the cow library, but the shelf is gett ...

  9. 书架 bookshelf

    书架 bookshelf 题目描述 当Farmer John闲下来的时候,他喜欢坐下来读一本好书. 多年来,他已经收集了N本书 (1 <= N <= 100,000). 他想要建立一个多层 ...

随机推荐

  1. Windows资源管理器 已停止工作

    解决方案:http://jingyan.baidu.com/article/5225f26b6aa830e6fa0908a8.html

  2. 【python】django-celery 实现django项目定时任务

    官方:https://pypi.python.org/pypi/django-celery/ 参考:http://www.weiguda.com/blog/73/ 参考:http://www.liao ...

  3. http的header参数有关

    1.读文件 a.如果经过php处理:变成mime:text/html,在浏览器可以打开.否则是下载 b.phpui如果加上参数resid=01,那么返回的数据的Content-Type:applica ...

  4. Android IOS WebRTC 音视频开发总结(七五)-- WebRTC视频通信中的错误恢复机制

    本文主要介绍WebRTC视频通信中的错误恢复机制(我们翻译和整理的,译者:jiangpeng),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blac ...

  5. Spark Idea Maven 开发环境搭建

    一.安装jdk jdk版本最好是1.7以上,设置好环境变量,安装过程,略. 二.安装Maven 我选择的Maven版本是3.3.3,安装过程,略. 编辑Maven安装目录conf/settings.x ...

  6. python异常处理、反射、socket

    一.isinstance 判断对象是否为类的实例 n1 = print isinstance(n1,int) class A: pass class B(A): pass b= B() print i ...

  7. SBT 构建scala eclipse开发

    scala eclipse sbt 应用程序开发 搭建Eclipse开发Scala应用程序的一般步骤 一.环境准备: 1.Scala : http://www.scala-lang.org/ 2.Sc ...

  8. nodejs 下载,安装,测试(windows环境下)

    1.下载 nodejs英文官网:http://nodejs.org/ nodejs中文官网:http://nodejs.cn/ 两个都可以下载,用户可以根据自己的网络来选择用哪个下载. 进入官网之后版 ...

  9. 处理返回结果(XML)

    var xmlHttp function showUser(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Br ...

  10. JSONCPP安装

    我刚刚开始从windows MFC下的开发转的LINUX下的C++开发.在写这篇文章之前我三次安装jsoncpp,每一次安装都犯不同的错误.为了我能够在下一次安装时不再犯错误.特写此文!JSONCPP ...