sails mysql_Sails+MVC+Mysql+Node+学习笔记一
项目构建
安装Node就不多说了,
1.sails安装与项目新建运行
npm install sails -g//全局安装
sails new project-name//新建项目
cd project-name //进入刚才新建项目的目录
sails lift //运行项目,运行原理也是直接在项目目录路径下使用node app.js
npm install sails-mysql --save //--save 把安装的模块写进package.json
到了这一步,环境算是搭建完成。
2.目录结构介绍
2.1api
在api目录下,有着controller、hooks、models、policies、responses和services几个目录
controller目录下存放的就是页面与后台服务器通讯的接口,如果对应的java,那么就是java里面的Action层或者使用Spring
MVC ,那么也是对应的Controller,里面存放的就是接口。
models,数据模型层,也就是实体层,对应java里面的entity。
policies(策略),在controller之前执行,主要工作是session认证,如果session是认证通过了,那么就可以进入下一个策略或者如果是最后一个策略,那么就可以进入controller了,个人感觉像是java里的过滤器或者分发器。
responses,自定义的响应。举个例子,一般从前台发出一个请求后,如果经过了服务器,那么都会给客户端返回一个结果,除了本身自带的响应方式,也可以采用自定义的响应,比如返回一个404页面,返回500页面或者返回字符串等等。
services,业务逻辑处理层,采用es6的Module的语法编写。
2.2assets静态资源层
在这层目录里面有,js,image,styles,templates,这个目录里面主要放的就是静态资源,没什么说的。
2.3config配置层
这层里面有env和locales两层,然后和一些js。
env中有一个development.js里面的注释是如下:
开发环境配置,这个文件夹里面包含了开发团队共享的一些配置,比如api的名称,数据库的密码,如果你在你的Sails应用中使用了版本控制器,这个文件也会提交到你的资源仓库里面,除非你在gitignore中添加了一个信息,表明这个文件是私有的或不公开的。
env中的production.js里的注释如下:
项目环境配置,与development类似,但是从注释中看到要多一些东西,比如配置端口的和日志的
2.4task任务层
这层里面主要放置的是grunt的任务,
2.5views层
这一层主要放置的是作为展示的前台页面,一种情况是使用node做单纯的后台服务器,不处理前台业务,而另外一种情况是采用模块化的思想,对结构进行分层,达到MVC的合理实现,本来Sails就是一个MVC框架所以第一种情况还是不太会出现。
3开始搭建项目
整体流程:新建数据库 -> 新建表 -> 建实体 -> 在sails中搭建环境 -> 编码 -> 得到结果
3.1新建数据库和表
建好mysql数据库,然后新建表,新建表有两种新建方式,一种是自动建表,另外一种是手动建表。手动建表我就不多说了。
3.2链接数据库
设计的主要文件是config里面的connections.js,里面存放的是链接数据库的配置,这里的配置不光只能配置这么一个链接,可以多个不同或相同数据库,代码如下:
mySqlServer: {
adapter: 'sails-mysql',
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
database: 'myproject',
charset:'utf8'
}
然后下一个重要文件就是models.js里面的文件,里面存放的是数据库使用的那个链接,以上面的名字作为键值,代码如下:
connection: 'mySqlServer',
migrate: 'alter'
connection :表示我是用的就是mySqlServer这个链接
migrate:alter修改,这意味这对这个数据在运行项目时时会根据你实体的设计修改数据中的表结构的。而safe就是要手动建表,那么这个时候你得把实体与数据库对应起来之不过有点麻烦,对于初学者来说还是把实体与数据库手动对应起来吗,因为之后还会有复杂的表间关系,比如说一对一、一对多、多对多等。
3.3建立数据模型
回到api层理的models里面,在里面新建好js文件,值得注意的是文件名称,这个名称直接关系到你之后的查询,删除等操作,我新建的operator的代码如下:
module.exports = {
attributes:{
username:{
type:'string',
required:true
},
password:{
type:'string',
required:true
}
}
}
除了这两个字段,sails会自动给你在表里面新建三个字段,id,createdAt,updatedAt,新建好数据的表结构如下图所示:
3.4测试数据链接
执行代码在项目路径下进入CMD命令窗口
node app.js或者sails lift,执行完之后如果没有报错且新建好数据库那么就没什么问题了。
那么在这个阶段容易碰到的问题有那些呢:
Consistency violation: A model (`operator`) references a datastore which cannot be found (`otherSql`).
这句话的意思是,operator这个数据模型在otherSql这个链接中找不到。所以遇到这个情况就检查是不是链接配的有问题或者Mysql的服务已关闭。
3.5controller的配置
controller配置里面的是交互的接口,代码如下:
module.exports = {
findOne:function (req,res) {
var id = req.param('id');
if(id){
console.log(id);
operator.find(id, function operatorFound(err, entity) {
res.send(entity,200);
});
}else{
console.log("是啊比");
res.send("失败",500);
}
}
};
一个简单的查询就这么完成了,写完成之后就是验证编写的正确性了。在浏览器输入url:
http://localhost:1337/user/findOne?id=1
查出来的结果如图所示:
这条数据手动添加的,这样一个很简单的demo算完成了。
4补充
如果想要修改项目访问端口,可在local.js里面添加:port:端口号,项目访问默认路径是user,想要修改的话,可以在route里面修改进行访问。
代码如下:
'/findOne':{
controller:'UserController',
action:'findOne'
}
起哄controller对应的就是controller的文件名(不添加后缀),action:对应的就是里面的方法名。
sails mysql_Sails+MVC+Mysql+Node+学习笔记一相关推荐
- 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)
数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...
- MySQL高级学习笔记(四)
文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...
- linux数据库创建score表,MySQL数据库学习笔记
MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...
- MVC缓存OutPutCache学习笔记 (一) 参数配置
OutPutCache 参数详解 Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location : 缓存放置的位置; 该 ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
http://blog.jobbole.com/85008/ ASP.Net MVC开发基础学习笔记(5):区域.模板页与WebAPI初步 2015/03/17 · IT技术 · .Net, Asp. ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- php mvc 路由,PHP MVC框架路由学习笔记
文章主要介绍了PHP MVC框架路由学习笔记的相关资料,需要的朋友可以参考下. 提到PHP开发web,自然离不开开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等... 第一篇先来 ...
- MySQL 索引学习笔记
MySQL 索引学习笔记 索引基本概念 索引优点 B-Tree 索引 基本原理 使用场景 使用限制 哈希索引 基本原理 使用限制 自适应哈希索引 处理哈希冲突 相关面试题 高性能索引策略 独立的列 前 ...
- MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])
MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...
最新文章
- Git环境搭建与基本使用方法 (转自http://blog.csdn.net/fireelement/article/details/9618363)
- 团队博客作业-团队个人贡献分分配规则
- 【转】Task和async/await详解
- Visual C++ MFC/ATL开发-提高篇
- URI Is Not Registered
- Python 最抢手、Java 最流行、Go 最有前途,7000 位程序员揭秘 2019 软件开发现状...
- tomcat-maven-plugin 插件使用
- android屏幕内容实时传输,在设备之间无缝传输内容
- Android 判断邮箱格式是否正确
- redis集群异常 — redis.clients.jedis.exceptions.JedisConnectionException: no reachable node in cluster
- 【tomcat】6、调优
- 2023首届大学生算法大赛——补题
- 阿里云LNMP环境搭建
- 计算机游戏的作文,电脑游戏作文3000字初一_查字典作文网
- 网站SEO优化注意点
- Cadence路径设置
- 宝塔 mysql备份 不全_宝塔数据库无法备份,备份完数据总是20b的问题解决。
- Maven聚合淘淘商城工程时,报错Could not find artifact
- ImageIO.write 支持写入的图片格式 Java
- oracle 连接查询,子查询,分组函数
热门文章
- 网络电视服务器账号密码,中兴网络电视机顶盒密码是多少
- 一款值得使用的会议室管理软件【会议预订小程序】
- (经典)tcp粘包分析
- 《我叫MT》手游源码和资源下载
- 2020icpc沈阳打铁记
- 电影《决战中途岛》中那些真实的历史人物,后来都怎样了?
- mac如何安装vue(简单明了)
- 地铁的建设主要用什么计算机知识,地铁知识竞答--选择题填空题
- Python自动化办公:27行代码实现将多个Excel表格内容批量汇总合并到一个表格
- QClub:Ruby网站架构案例分享──财帮子FreeWheel(10.19 北京)