绝版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. 8皇后问题(c++/python实现)

    问题描述:在8*8的国际象棋盘上摆放8个皇后,使其不能互相攻击,即任何两个皇后都不能处于同一行.同一列或者同一斜线上,问有多少种摆法. 算法分析: 利用3个数组分表来标记冲突,数组a.b.c. a数组 ...

  2. 源码分析篇 - Android绘制流程(一)窗口启动流程分析

    Activity.View.Window之间的关系可以用以下的简要UML关系图表示,在这里贴出来,比较能够帮组后面流程分析部分的阅读. 一.Activity的启动流程 在startActivity() ...

  3. Git 的4个阶段的撤销更改

    虽然git诞生距今已有12年之久,网上各种关于git的介绍文章数不胜数,但是依然有很多人(包括我自己在内)对于它的功能不能完全掌握.以下的介绍只是基于我个人对于git的理解,并且可能生编硬造了一些不完 ...

  4. MVC源码分析 - Authorize授权过滤器

    从 上一篇 其实能看到, 程序执行的过滤器, 有四种 : 过滤器类型 接口 描述 Authorization IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某 ...

  5. Java实现排行榜基于Redis

    访问我的博客 前言 排行榜作为互联网应用中几乎必不可少的一个元素,其能够勾起人类自身对比的欲望,从而来增加商品的销量.排行榜的实现方式基本大同小异,大部分都基于 Redis 的有序集合 sorted ...

  6. JS pop push unshift shift的作用与区别

    白话JS中数组方法pop push unshift shift的作用与区别,通过本文,你大概能知道这四种数组方法的基本使用与大致区别. 首先,这四种方法会直接修改数组,请先记住这一点. 我们先把pop ...

  7. JavaScript 内存泄露以及如何处理

    一.前言 一直有打算总结一下JS内存泄露的方面的知识的想法,但是总是懒得提笔. 富兰克林曾经说过:懒惰,像生鏽一样,比操劳更能消耗身体,经常用的钥匙总是亮闪闪的.安利一下,先起个头. 二.内存声明周期 ...

  8. [NOI 2016]循环之美

    Description 题库链接 给出十进制下的 \(n,m,k\) ,求 \(\frac{i}{j},i\in[1,n],j\in[1,m]\) 在 \(k\) 进制下不同的纯循环小数个数. 纯循环 ...

  9. [转]TFS常用的命令行详解

    本文转自:http://blchen.com/tfs-common-commands/ 微软的TFS和Visual Studio整合的非常好,但是在开发过程中,很多时候只用GUI图形界面就会发现一些复 ...

  10. jQuery获取动态产生的html内标签或元素

    下午分享<MVC编辑状态两个DropDownList联动>http://www.cnblogs.com/insus/p/3426563.html 不久,马上有网友问及三级联动的例子.Ins ...