• 首页
  • nodejs
  • sails 框架下 Waterline ORM 常用查询方法

sails 框架下 Waterline ORM 常用查询方法

sails.png


文章目录


之前有一篇简单介绍了 Sails下orm框架 waterline


Waterline 常用的查询方法


find 条件查询

事例:

models.user.find().exec(function(err, models) {
   if(err) 
     return res.json({ err: err }, 500);
 });

上面事例的 find 方法无参数,相当于全表查询,最后执行 exec 方法拿到数据.
现在我们来看下 find 方法可以接受哪些参数呢.

find 方法可以接收 3类参数:

  1. 过滤条件 where
  2. 查询条数限制 skip 和 limit
  3. 排序条件 sort

示例:

models.user.find({ where: { name: '一介布衣' }, skip: 10, limit: 10, sort: 'name DESC' });

从模型 user 映射的表中查询 name='一介布衣' 的数据,以 name 字段倒序.
在查询的数据中,选择第10条开始,第20条结束
类似 sql 语句中的
SELECT * FROM user LIMIT 10,10

如果我们没有排序,没有过滤条数时, where 关键词可以省略:

models.user.find({name:'一介布衣'});  //可以多条件

查询 user model 中 name='一介布衣' 的用户
sql 中类似 where name='一介布衣'


字段包含某关键词 contains

models.user.find({
  name : {
    'contains' : 'buyi'
  }
})

我们的代码是使用 find 方法查找 name字段中包含 buyi 关键词的数据.
类似 sql 语句中的 like 语法


字段在某个范围内选择

models.user.find({
  name : ['yijiebuyi', '一介布衣']
});

在user models 中查找 name='yijibuyi' 或者 name='一介布衣' 注意他们是"或" 的关系
类似 sql 中的
select * from user where name='yijiebuyi' or name='一介布衣';
或者
select * from user where name in ("yijiebuyi","一介布衣");


字段不在某个范围内选择

models.user.find({
  name: { '!' : ['一介', '布衣'] }
});

在 user models 中查找 name 不等于 '一介' 或者 不等于 '布衣' 的用户
类似 sql 中的
select * from user where name!='一介' or name!='布衣';
或者
select * from user where name not in ("一介","布衣");


多个字段查询,其中一个满足条件即可

models.use.find({
  or : [
    { name: '一介布衣' },
    { age: 30 }
  ]
})

在上面的find 查询中,我们上面加入了2个判断条件,其中是 或 的关系,满足其中一个即可.


find 修饰符查询

>' 大于 ,<小于 ,>=大于等于 ,<=小于等于 ,!` 不等于

find 查询中直接在某个查询字段上加上修饰符

年龄小于 30 岁的用户

models.user.find({age,{'<':30}});

年龄不等于 15 岁的用户

models.user.find({age:{'!':15}});

like 修饰符

使用语法:

models.user.find({name:{'like':'%布衣%'}});

user 中查询 name 中包含 '布衣' 关键词的用户

从 like 语法中衍生出来2种匹配方式 ,从头匹配 或者 从尾匹配


从头匹配

models.user.find({name:{'like':'布衣%'}});

还有一个专门指定从头匹配的修饰符 'startsWith'

models.user.find({name:{'startsWith':'一介'}});

从尾匹配

models.user.find({name:{'like':'%一介'}});

当然也有一个专门从尾匹配的修饰符 'endsWith'

models.user.find({name:{'endsWith':'一介'}});

多个修饰符 同时使用

常见的比如 选择一个日期范围 ,从 2016-09-02 到 2017-02-15

下面我们同时使用 <> 2个符号

models.user.find({data:{'>':new Date('2/9/2016'),'<':new Date('15/2/2017')}});

多个条件放在一个修饰符选择器中

出自:sails 框架下 Waterline ORM 常用查询方法

回到顶部