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 PROFILER 监测死锁

    作为DBA,可能经常会遇到有同事或者客户反映经常发生死锁,影响了系统的使用.此时,你需要尽快侦测和处理这类问题. 死锁是当两个或者以上的事务互相阻塞引起的.在这种情况下两个事务会无限期地等待对方释放资 ...

  2. Android端访问服务器核心代码

  3. linux虚拟机最优测试环境搭建

    目标:创建一个最优的linux虚拟机环境 环境:vmware12.0 系统:centos6.5 (* 以下配置是建立在配置完成基础网络环境后创建的,用static静态IP地址) 1.关闭selinux ...

  4. 推荐一个很好用的脚本session snapper

    源网址http://tech.e2sn.com/oracle-scripts-and-tools/session-snapper 内容: If you want to just download Sn ...

  5. Perl实用中文处理步骤(修改版)

    发信人: FenRagwort (泽), 信区: Perl标  题: Perl实用中文处理步骤(修改版)发信站: 水木社区 (Mon Feb 14 12:52:14 2011), 转信 (修改版 感谢 ...

  6. python入门10 循环语句

    两种循环: 1 for in 2 while #coding:utf-8 #/usr/bin/python """ 2018-11-03 dinghanhua 循环语句 ...

  7. 网络体系结构的概念 - 网络协议TCP - 红黑联盟

    https://i.cnblogs.com/EditPosts.aspx?opt=1 网络体系结构的概念  计算机网络就是一组通过一定形式连接起来的计算机系统,它需要四个要素的支持,即通信线路和通信设 ...

  8. 编程思想的理解(POP,OOP,SOA,AOP) x

    http://blog.chinaunix.net/uid-29417436-id-4060980.html 1)POP--面向过程编程(Process-oriented programming ): ...

  9. 树的直径的求法即相关证明【树形DP || DFS】

    学习大佬:树的直径求法及证明 树的直径 定义: 一棵树的直径就是这棵树上存在的最长路径. 给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和.树中最远的两个节点之间的距 ...

  10. 二.Mybatis 增删改查

    Student.java package com.pojo; import java.util.Date; public class Student { int stuid; String stuNa ...