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


    绝版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文件操作)

     
     1 //引入框架
     2 
     3 const Sequelize = require('sequelize');
     4 //创建ORM实例
     5 const sequelize = new Sequelize('api', 'root','',
     6  {
     7  'dialect': 'mysql', // 数据库使用mysql
     8  }
     9 );
    10  
    11  
    12 sequelize
    13 .authenticate()
    14 .then(()=>{
    15     console.log('链接成功');
    16 })
    17 .catch((error)=>{
    18     console.log('链接失败'+error);
    19 })

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

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

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

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

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

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

    不过这里需要强调一点:

     进入增删该查:

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

     1 //引入框架
     2 const  Sequelize = require('sequelize');
     3 //创建ORM实例 api是我的数据库名字 root登录数据库名 ‘’表示登录我的数据库不需要密码
     4 const sequelize = new Sequelize('api', 'root','',
     5   {
     6     'dialect': 'mysql',  // 数据库使用mysql
     7   }
     8 );
     9 
    10 sequelize
    11 .authenticate()
    12 .then(()=>{
    13     console.log('链接成功');
    14 })
    15 .catch((error)=>{
    16     console.log('链接失败'+error);
    17 })
    18 
    19 //模型的创建
    20 //1,用代码定义模型,然后同步到数据库中
    21 //2,通过已有数据库生成ORM model
    22 
    23 //自己看的知识点:数据验证,要求,age不能为负数!  //这里我创建了三个模型对象 ,会在数据中生成三张表
    24 const User = sequelize.define('user',{
    25     name:Sequelize.STRING,//定义表结构 name 为string类型
    26     age:Sequelize.INTEGER,//定义表结构
    27 });
    28 
    29 const Message = sequelize.define('message',{
    30     text:Sequelize.STRING,//定义表结构
    31 });
    32 
    33 const Image = sequelize.define('image',{
    34     url:Sequelize.STRING,//定义表结构
    35 });
    1 //同步所有的model和所有关系
    2 sequelize.sync();

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

     下面我们在做查询操作

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

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

     1 // User.findOne().then(u=>{
     2 //     console.log('==========================');
     3 //     console.log(u.dataValues);
     4 //     console.log('==========================');
     5     
     6 // });
     7 // //第二查询
     8 User.findAll({
     9     where:{id:2},
    10     attributes:['lastName']//查询部分字段,即不必查询出来你表中所有的字段 类似于 select xx,cc from table
    11 })
    12 .then((users)=>{
    13     console.log('==========================');
    14     console.log(JSON.stringify(users));
    15     console.log('==========================');
    16 });
    17 // //第三查询
    18 // User.findOne({where:{id:2}})
    19 // .then((users)=>{
    20 //     console.log('==========================');
    21 //     console.log(JSON.stringify(users));
    22 //     console.log('==========================');
    23 // });
    24 
    25 // //第四查询
    26 // User.findOne({where:{id:3}})
    27 // .then((u)=>{
    28 //     console.log('==========================');
    29 //     // console.log(u);
    30 //     console.log('==========================');
    31     
    32 // });

    最后我们说删除

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

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

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

      

      

  • 相关阅读:
    echarts饼图标题居中以及调整主副标题的间距
    同一页面多个echarts自适应窗口
    element添加人员判断不能重复添加(复选框禁用)
    element根据不同的tab页签进行检索
    vue+element 表格单元格内添加/编辑
    Pycharm 中 Material Theme UI等插件
    Redis 知识记录
    李宏毅老师hw1 linear regression模型改进
    李宏毅老师regression部分全部
    李宏毅老师hw1 linear regression模型
  • 原文地址:https://www.cnblogs.com/gdsblog/p/7218940.html
Copyright © 2020-2023  润新知