绝版Node--Sequlize搭建服务(Node全栈之路)





参考资料:https://itbilu.com/nodejs/npm/VkYIaRPz-.html

准备环境:Mysql,Node

前沿:

  为大家介绍一下,什么是sequlize,ssequlize是基于node的一个ORM框架,如果你有Java 或者是C#开发经验,我们在操作数据库的时候会用到一些ORM映射数据库的表实体到我们程序中的实体类,这里我们称之为关系对象。

  这里说几种ORM框架,NET中我们有EF(微软)、NHibernate(开源),Java中我们有Hibernate,同样Node的出现,它也有自己的ORM,那就是sequlize,它的出现,大大简化了繁杂的sql语句操作数据库,使得我们编程更加高效,这里ORM的出现,其优点可不是为了让你少些SQL的,它会提供他自己的一套处理O-R-M 之间的关系,这样使得我们处理一些复杂数据的时候,非常容易。

  对于老鸟来说:ORM上手起来是非常容易的,首先我们从它的基本增删该查讲起,其次我们掌握基本增删该查后,会学习表之间的关系如何创建,(每一个ORM都有他自己的一套指定表关系的模式),本人这里熟悉EF,了解NHibernate,刚刚掌握Sequlize,指定表关系也无非就是,A表B表C表之间的关系,一对多,多对多,一对一。

  对于每一个ORM来说,掌握了这些,就可以开发使用了。

  正式开始||

首先我们要创建一个本地文件夹

用Dos定为到这个文件夹,执行npm init 将其创建成为一个Node包

然后在这个包里安装sequlize,具体操作如下截图

  然后在你刚创建的文件夹里创建一个index.js文件,我们今天所有的代码,都将在index.js里写,并且index.js也是我们的一个主入口文件。

  基本增删改查(index.js文件操作)

 
 //引入框架

 const Sequelize = require('sequelize');
//创建ORM实例
const sequelize = new Sequelize('api', 'root','',
{
'dialect': 'mysql', // 数据库使用mysql
}
); sequelize
.authenticate()
.then(()=>{
console.log('链接成功');
})
.catch((error)=>{
console.log('链接失败'+error);
})

这里需要连接我们的MYSQL数据库

当我们连接好数据库后,需要创建模型,之后sequlize会自动将你创建的模型映射到数据库

下面我们就可以用User这个对象 来对数据库中的user表经行增删改查的操作了

我们真的完事大吉了吗?如果你这么认为,那就错了!.....我们需要把模型同步到数据库里

那么现在你得数据库就会自动创建好一张表

那么现在就可以真正经行增删该查的操作了

不过这里需要强调一点:

进入增删该查:

这里我需要彻头彻尾的粘贴一下代码,不然读者该骂了

 //引入框架
const Sequelize = require('sequelize');
//创建ORM实例 api是我的数据库名字 root登录数据库名 ‘’表示登录我的数据库不需要密码
const sequelize = new Sequelize('api', 'root','',
{
'dialect': 'mysql', // 数据库使用mysql
}
); sequelize
.authenticate()
.then(()=>{
console.log('链接成功');
})
.catch((error)=>{
console.log('链接失败'+error);
}) //模型的创建
//1,用代码定义模型,然后同步到数据库中
//2,通过已有数据库生成ORM model //自己看的知识点:数据验证,要求,age不能为负数! //这里我创建了三个模型对象 ,会在数据中生成三张表
const User = sequelize.define('user',{
name:Sequelize.STRING,//定义表结构 name 为string类型
age:Sequelize.INTEGER,//定义表结构
}); const Message = sequelize.define('message',{
text:Sequelize.STRING,//定义表结构
}); const Image = sequelize.define('image',{
url:Sequelize.STRING,//定义表结构
});
 //同步所有的model和所有关系
sequelize.sync();

下面在做修改,修改要加id,不加id会报错

下面我们在做查询操作

 // 单条数据查询
SELECT `id`, `first_name` AS `firstName`, `lastName`, `createdAt`, `updatedAt` FROM `user` AS `user` WHERE `user`.`id` = 1 // 多条数据查询
SELECT `id`, `first_name` AS `firstName`, `lastName`, `createdAt`, `updatedAt` FROM `user` AS `user`

  在这里再补充点查询 ,(如果我们想查询部分字段怎么半)

 // User.findOne().then(u=>{
// console.log('==========================');
// console.log(u.dataValues);
// console.log('=========================='); // });
// //第二查询
User.findAll({
where:{id:2},
attributes:['lastName']//查询部分字段,即不必查询出来你表中所有的字段 类似于 select xx,cc from table
})
.then((users)=>{
console.log('==========================');
console.log(JSON.stringify(users));
console.log('==========================');
});
// //第三查询
// User.findOne({where:{id:2}})
// .then((users)=>{
// console.log('==========================');
// console.log(JSON.stringify(users));
// console.log('==========================');
// }); // //第四查询
// User.findOne({where:{id:3}})
// .then((u)=>{
// console.log('==========================');
// // console.log(u);
// console.log('=========================='); // });

最后我们说删除

好了,记住,删除叫destroy!!!

基本增删该查我们就到这里,下一篇文章讲一下,如何实现多表之间的对应关系,一对一hasOne 一对多 belong to hasManay .

..如果有问题的朋,欢迎加我微信:jkxx123321

  

  

绝版Node--Sequlize搭建服务(Node全栈之路)的更多相关文章

  1. 绝版Node--Sequlize搭建服务(Node全栈之路 二)

    在Node全栈之路(一),也就是上篇文章中,我们讲到了sequlize的基本增删该查,这篇文章,我们在上篇文章的基础上继续探讨,讲一下关于sequlize创建的表之间的对应关系 参考资料:https: ...

  2. C蛮的全栈之路-node篇(二) 实战一:自动发博客

    目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 ---------------- 我是分割线 ---- ...

  3. C蛮的全栈之路-node篇(一) 环境布置

    目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 ---------------- 我是分割线 ---- ...

  4. C蛮的全栈之路-序章 技术栈选择与全栈工程师

    目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 博主背景 985院校毕业,至今十年C++开发工作经验, ...

  5. python 全栈之路

    目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...

  6. Python全栈之路目录结构

    基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...

  7. Python全栈之路----目录

    Module1 Python基本语法 Python全栈之路----编程基本情况介绍 Python全栈之路----常用数据类型--集合 Module2 数据类型.字符编码.文件操作 Python全栈之路 ...

  8. Python全栈之路----常用模块----hashlib加密模块

    加密算法介绍 HASH       Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列 ...

  9. Node.js 中开源库探秘 object-assign | 全栈之路

    这篇内容呢,讲的是另一个技术栈 Node.js 系列,虽然和咱们这里的主题不是特别吻合,不过嘛,汲取多样性的养分是快速成长的好方法,也是现在流行的全栈工程师的必经之路. 由于这篇内容涉及的是 Node ...

随机推荐

  1. 课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 2、编程作业常见问题与答案(Programming Assignment FAQ)

    Please note that when you are working on the programming exercise you will find comments that say &q ...

  2. Form表单中不同的按钮进行不同的跳转

    本文参考:http://my.oschina.net/sallency/blog/300568 在开发工作共我们往往会遇到一个表单需要包含多个action不同的提交动作,这时候就不能在使用submit ...

  3. Ehcache的视频-如何用Ehcache提升你的Java应用性能

    Java应用最广的缓存(分布式缓存)Ehcache的Youtube介绍视频 (需-翻-墙)

  4. 02-03:springboot 整合listener

    1.通过注解扫描完成Listener组件的注册 1.1 编写listener /** * Springboot 整合listener */ import javax.servlet.ServletCo ...

  5. Spring mvc 4系列教程(二)——依赖管理(Dependency Management)和命名规范(Naming Conventions)

    依赖管理(Dependency Management)和命名规范(Naming Conventions) 依赖管理和依赖注入(dependency injection)是有区别的.为了将Spring的 ...

  6. gitlab的md文件内使用锚点

    markdown中使用锚点的格式: [要显示的内容](#锚点的链接) 如: [工具](#tool) 又因为再markdown中每一个标题都默认是锚点,所以事情就简单了 # test ## conten ...

  7. WPF中的TextBlock隐藏边框

    TextBlock默认是有边框的,显示效果如下:有一个淡蓝色的边框围绕着 如果需要隐藏这个边框,则只需要在代码中加上以下代码即可: BorderBrush="{x:Null}" B ...

  8. 关于SAN和NAS的区别-转

    什么是SAN与NAS By  王文平 发表于 2006-7-10 18:03:53  NAS和SAN字面上相似,并且都是新型数据存储模式,但这二者是完全不同的,针对不同方向的技术. 什么是SAN(St ...

  9. nginx权限问题failed(13:Permission denied)

    nginx权限问题failed(13:Permission denied) 环境配置  nginx Permission denied 问题: 使用nginx代理uwsgi,出现500错误,查看ngi ...

  10. 开源方案搭建可离线的精美矢量切片地图服务-8.mapbox 之sprite大图图标文件生成(附源码)

    项目成果展示(所有项目文件都在阿里云的共享云虚拟主机上,访问地图可以会有点慢,请多多包涵). 01:中国地图:http://test.sharegis.cn/mapbox/html/3china.ht ...