Waterline基本介绍

Waterline是什么

Waterline是下一代存储和检索引擎,也是Sails框架中使用的默认ORM 。

ORM的基本概念

Object Relational Mapping

将文档数据库中的一个文档,关系数据库表中的一行,映射为JavaScript中的一个对象

操作对象,便可以完成对数据库的操作

Waterline特点和优势

支持大部分主流数据库

脱离SQL

使用同样的代码操作不同的数据库

易于理解的符号   //数学符号

丰富的方法  //增删改查 20多个

多样的数据类型

Waterline相对于Mongoose的比较

支持更多的数据库

提供比Mongoose更丰富的CURD方法

更丰富的数据校验方法

Waterline主要概念

适配器

功能:将统一的操作代码,转换为某种数据库所支持的数据库操作

代码创建:

var mysqlAdapter = require('sails-mysql');
var mongoAdapter = require('sails-mongo');

var adapters = {
  mongo : mongoAdapter,
  mysql : mysqlAdapter,
  default : mongo
}

连接

通过某个适配器,及对应的连接信息,来建立一个与数据库的实际连接

代码展示:

//连接配置
var connections = {
  mongo : {
    adapter : 'mongo',
    url : 'mongodb://localhost/watereline'
  },
  mysql : {
    adapter : 'mysql',
    url : 'mysql://root:@localhost/watereline'
  }
};

数据集合

定义具体的数据类型

类似于mongoose中的Model

具体对应关系数据库中的表、和文档数据库中的集合

校验器

执行数据检查

使用的是Anchor https://github.com/sailsjs/anchor

预定义的数据校验器,支持常规检查、时间检查、经纬度坐标检查、Email地址检查等

支持自定义数据校验器

生命周期回调

创建时:beforeValidate/afterValidate/beforeCreate/afterCreate

更新时:beforeValidate/afterValidate/beforeUpdate/afterUpdate

删除时:beforeDestroy/afterDestroy

Waterline从概念到实操的更多相关文章

  1. SBT实操指南

    参考资料:1.英文官方文档2.中文官方文档,内容翻译的不全 SBT是类似maven和gradle的自动构建和包依赖管理工具,SBT是Scala技术体系下的包管理工具,都是Lightbend公司开发的, ...

  2. ASP.NET Core托管和部署Linux实操演练手册

    一.课程介绍 ASP.NET Core 是一种全新的跨平台开源 .NET 框架,能够在 IIS.Nginx.Apache.Docker 上进行托管或在自己的进程中进行自托管. 作为一个.NET Web ...

  3. 【Social listening实操】作为一个合格的“增长黑客”,你还得重视外部数据的分析!

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 在本文中,作者引出了"外部数据"这一概 ...

  4. (二)Linux实操之——网络配置、进程管理、服务管理、组管理、YUM

    接上段   (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以 ...

  5. 决策树算法的Python实现—基于金融场景实操

    决策树是最经常使用的数据挖掘算法,本次分享jacky带你深入浅出,走进决策树的世界 基本概念 决策树(Decision Tree) 它通过对训练样本的学习,并建立分类规则,然后依据分类规则,对新样本数 ...

  6. Iptables 实操

    目录 Iptables之实操 简介 名称概念: 四表中常用的表 Nat表 Filter表 iptables表和链的工作流程图 iptables过滤图 Iptables安装 Iptables 命令说明 ...

  7. jmeter & 性能测试:从0到实战(实操易用、面试造火箭、升职加薪必备)

    [性能基础] 性能测试概念.术语:https://www.cnblogs.com/uncleyong/p/10706519.html 性能测试流程(新):https://www.cnblogs.com ...

  8. ISISv4协议测试——网络测试仪实操

    文章关键词 ISIS协议:路由协议:协议测试: 一.文章简介: isis是一种与ospf很相似的网络协议(属于动态路由协议),它被应用在巨大规模网络,如运营商以及银行等.同样的它也是基于链路状态算法, ...

  9. 时间模块之datatime模块、os模块、sys模块、json模块、json模块实操

    目录 一.模块的绝对导入和相对导入 二.包的概念 三.编程思想的转变 四.软件开发目录规范 五.常见的内置模块 一.时间模块之datatime模块 1.datetime.datetime.today( ...

随机推荐

  1. 深入浅出 关于SQL Server中的死锁问题

    深入浅出 关于SQL Server中的死锁问题 博客2013-02-12 13:44   分享到:我要吐槽 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相 ...

  2. 实现动态代理(Java和spring)

    一.Java实现动态代理 1.创建接口 package com.oyy.mw.biz.i; public interface Cal { public int add(int num1,int num ...

  3. Angular5+ 自定义表单验证器

    Angular5+ 自定义表单验证器 Custom Validators 标签(空格分隔): Angular 首先阐述一下遇到的问题: 怎样实现"再次输入密码"的验证(两个cont ...

  4. Locust性能测试2 分布式运行

    locust分布式可以是本机多进程,也可以是本机作为master,其他机器作slave. 试一下本机的多进程运行: 1  控制台输入 locust -f 脚本路径 --master 2  打开另一个控 ...

  5. 【BZOJ4766】文艺计算姬(prufer序列)

    点此看题面 大致题意: 让你求一个两边各有\(n\)和\(m\)个点的完全二分图有多少个生成树. \(prufer\)序列 这是一道比较经典的利用\(prufer\)序列结论求解答案的计数题. 大致思 ...

  6. PHP设计模式——适配器模式

    <?php /** * 适配器模式 * 适配器模式是将某个对象的接口适配为另一个对象所期望的接口 * * 在需要转化一个对象的接口用于另一个对象时,最好实现适配器模式对象 */ class We ...

  7. input按钮选择功能

    <p> <input type="checkbox" class="ischecked" id="is_pinkage" ...

  8. js邮箱验证,身份证验证,正则表达式

    邮箱验证: html部分: 邮箱验证:<input type="text" id="mail" value="" / onkeyup= ...

  9. windows下搭建python

    windows下搭建python 下载python版本  https://www.python.org/   注意当前操作系统的位数,32位还是64位 同时   安装后  修改环境变量         ...

  10. 重写equals方法(未完)

    equals方法是我们日常编程中很常见的方法,Object中对这个方法的解释如下: boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”. 查看该方法的底层代码如 ...