回到目录

上讲主要说了如何配置sails的持久化机制,这讲主要说一下实现持久化时的增删改查的语法,在sails里使用了和mongodb风格类似的waterline查询语言,使用简单,语法生动,下面我们主要介绍一下find,findOne,Update,Create,Destory等。

find,查询并返回结果集

Model.find({ name: 'foo' })

上面查询name等于foo的集合,如果希望返回分页结果,可以使用limit和skip参数,如下

Model.find({ where: { name: 'foo' }, skip: , limit:  });

如果希望在结果中进行序列,使用sort参数

Model.find({ where: { name: 'foo' }, skip: , limit: , 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: { '>=':  }})

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

回到目录

Node.js与Sails~中间查询语言Waterline的更多相关文章

  1. Node.js与Sails~项目结构与Mvc实现

    回到目录 Sails是一个Node.js的中间件架构,帮助我们很方便的构建WEB应用程序,网址:http://www.sailsjs.org/,它主要是在Express框架的基础上发展起来的,扩展了新 ...

  2. Node.js与Sails~自定义响应体responses

    回到目录 在Node.js里,你可以控制请求和响应,自己可以定义自己的响应方式,如对文本如何响应,对json如何响应,对图像流如何响应等等,而这些在Sails架构里,变得更加容易和清晰了,它位于项目的 ...

  3. Node.js之sails框架

    先开一坑,有空更新,记录最近钉钉项目上对node及sails框架的学习记录和理解

  4. Node.js与Sails~日志机制log

    回到目录 看到Sails的日志就会想起来log4net,确实它们在很多地方是相似的,都是采用分级别记录的方式,而sails我觉得在使用上更加方便,它不需要我们做多于的事情,直接sails.log.级别 ...

  5. Node.js与Sails~方法拦截器policies

    回到目录 policies sails的方法拦截器类似于.net mvc里的Filter,即它可以作用在controller的action上,在服务器响应指定action之前,对这个action进行拦 ...

  6. Node.js与Sails~Model和ORM的持久化

    回到目录 上一讲说了在sails里定义model及相关参数的说明,这一讲主要说一下如何将你的Model持久化到文件,关系数据库和Nosql数据库里,在持久化这点上,sails是统一管理的,它可以在/c ...

  7. Node.js与Sails~Model数据模型

    回到目录 对于Sails来说,它的Model与数据库对应,不过它并没有采用目前比较流行的poco贫血模型,而是采用了类似DDD的充血模型,即它的数据实体里即有数据库字段(属性)而且还有方法,而模型里的 ...

  8. Node.js与Sails~redis组件的使用

    有段时间没写关于NodeJs的文章了,今天也是为了解决高并发的问题,而想起了这个东西,IIS的站点在并发量达到200时有了一个瓶颈,于是想到了这个对高并发支持比较好的框架,nodeJs在我之前写出一些 ...

  9. Node.js教程系列~目录

    Node.js这个东西在近几年火起来了,而且会一直火下去,无论在infoq还是在cnblogs,csdn上,都可以到处看到它的样子,它主推的应该就是异步式I/O 吧,是的,设计的很完美,很吸引人,虽然 ...

随机推荐

  1. easymock+junit+spring学习·

    Easymock学习                                Author:luojie 1.       Easymock简介 EasyMock 是一套通过简单的方法对于指定的 ...

  2. 【动态规划】bzoj1642 [Usaco2007 Nov]Milking Time 挤奶时间

    区间按左端点排序,dp. #include<cstdio> #include<algorithm> using namespace std; #define N 1001 st ...

  3. R语言数据处理利器——dplyr简介

    dplyr是由Hadley Wickham主持开发和维护的一个主要针对数据框快速计算.整合的函数包,同时提供一些常用函数的高速写法以及几个开源数据库的连接.此包是plyr包的深化功能包,其名字中的字母 ...

  4. Bootstrap 栅格系统

    1.简介 Bootstrap内置了一套响应式.移动设备优先的流式栅格系统,随着屏幕设备或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义classe,还有强大的m ...

  5. BZOJ2888 资源运输(LCT启发式合并)

    这道题目太神啦! 我们考虑他的每一次合并操作,为了维护两棵树合并后树的重心,我们只好一个一个的把节点加进去.那么这样一来看上去似乎就是一次操作O(nlogn),但是我们拥有数据结构的合并利器--启发式 ...

  6. C# IGUID的生成

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...

  7. ubuntu网络配置&&ubuntu apt-get错误解决办法

    网络配置: 方式1:网卡通过DHCP自动获取IP地址 $ sudo gedit /etc/network/interfaces # 修改文件/etc/network/interfaces如下文 #-- ...

  8. UI拼图导出脚本,兼容cegui的ImageSet格式

    该脚本用于photoshop,美术可以先用photoshop拼接图片,在加载该脚本导出xml格式的文件,该文件记录了每个小的图片坐标信息 // Copyright 2002-2003. Adobe S ...

  9. IntelliLock

    IntelliLock的使用说明: http://blog.csdn.net/gnicky/article/details/20737107 http://download.csdn.net/deta ...

  10. Android中实现多彩的霓虹灯

    1.布局文件 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:androi ...