Node.js与Sails~中间查询语言Waterline
2015-10-19 10:37
483 查看
回到目录
上讲主要说了如何配置sails的持久化机制,这讲主要说一下实现持久化时的增删改查的语法,在sails里使用了和mongodb风格类似的waterline查询语言,使用简单,语法生动,下面我们主要介绍一下find,findOne,Update,Create,Destory等。
find,查询并返回结果集
上面查询name等于foo的集合,如果希望返回分页结果,可以使用limit和skip参数,如下
如果希望在结果中进行序列,使用sort参数
下面是包含的实现,类似于C#的,contaions,表示包含某些字符的结果集
如果希望实现数据库的枚举查询,即in方式,可以这样进行
类似的,not in操作代码如下
当进行数据比较时,可以使用>,<,<=,>=等操作符
Waterline查询语言非常强大,几乎将所有查询语言的优点都收录了,下面还有startsWith和endsWith,这类似于C#里的方法,“以某些字段开头或者结束”
除了有面向对象的方法外,还有SQL的,如like方法,实现了模糊查询
最后再一下范围查询,它实际上是将多个方法组合在一起使用,下面是查询在2015-10-1到2015-10-30号的数据
而相对于查询来说,添加,更新和删除就简单多了,下面代码是对Person表进行的操作
添加
更新
删除
回到目录
上讲主要说了如何配置sails的持久化机制,这讲主要说一下实现持久化时的增删改查的语法,在sails里使用了和mongodb风格类似的waterline查询语言,使用简单,语法生动,下面我们主要介绍一下find,findOne,Update,Create,Destory等。
find,查询并返回结果集
Model.find({ name: 'foo' })
上面查询name等于foo的集合,如果希望返回分页结果,可以使用limit和skip参数,如下
Model.find({ where: { name: 'foo' }, skip: 20, limit: 10 });
如果希望在结果中进行序列,使用sort参数
Model.find({ where: { name: 'foo' }, skip: 20, limit: 10, sort: 'name DESC' });
下面是包含的实现,类似于C#的,contaions,表示包含某些字符的结果集
Model.find({ name : { 'contains' : 'zzl' } })
如果希望实现数据库的枚举查询,即in方式,可以这样进行
Model.find({ name : ['Walter', 'Skyler'] });
类似的,not in操作代码如下
Model.find({ name: { '!' : ['zzl', 'zql'] } });
当进行数据比较时,可以使用>,<,<=,>=等操作符
Model.find({ age: { '>=': 21 }})
Waterline查询语言非常强大,几乎将所有查询语言的优点都收录了,下面还有startsWith和endsWith,这类似于C#里的方法,“以某些字段开头或者结束”
Model.find({ city: { 'endsWith': 'china' }})
除了有面向对象的方法外,还有SQL的,如like方法,实现了模糊查询
Model.find({ city: { 'like': '%c%' }})
最后再一下范围查询,它实际上是将多个方法组合在一起使用,下面是查询在2015-10-1到2015-10-30号的数据
Model.find({ date: { '>': new Date('10/1/2015'), '<': new Date('10/30/2015') } })
而相对于查询来说,添加,更新和删除就简单多了,下面代码是对Person表进行的操作
添加
addUser: function (param,cb) { var opt = param || { name: 'zzl' }; Person.create(opt).exec(function (err, record) { console.log("添加") if (err) { cb('ERROR_DATABASE_EXCEPTION');//输出错误 } else { cb(null, record);//正确返回 } }); }
更新
modify:function(id,param,cb){ var opt = param || { name: 'zzl' }; Person.update({id:id},opt,function(err,record){ console.log("修改") if (err) { cb('ERROR_DATABASE_EXCEPTION');//输出错误 }else{ cb(null, record);//正确返回 } }); }
删除
delete:function(id,cb){ Person.destroy({id:id}).exec(function(err){ console.log("删除,ID:"+id); cb(null); }) }
回到目录
相关文章推荐
- Nodejs学习笔记之Stream模块
- 基于Nodejs+Less的动态CSS
- Testing Node.js With Mocha and Chai
- Node.js学习
- iOS GDataXMLNode 解析XML DOM方式 总结
- lintcode-Swap Nodes in Pairs -451
- nodejs这个过程POST求
- node.js+socket.io安装
- Swap Nodes in Pairs
- lintcode 容易题:nth to Last Node In List 链表倒数第n个节点
- Node 笔记
- 在Node中使用indicative来验证model
- 1.nodejs权威指南--基础知识
- 关于NODE NPM 输入命令后没反应的问题
- node安装和基础
- nodejs综合
- LeetCode OJ:Delete Node in a Linked List(链表节点删除)
- node-mysql 在4.2.0的时候遇到的错误
- Nodejs-搭建Nodejs开发环境
- LeetCode解题报告--Reverse Nodes in k-Group