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

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






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

准备环境:Mysql,Nodemysql

前沿:sql

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

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

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

  对于每个ORM来讲,掌握了这些,就能够开发使用了。api

  正式开始||微信

首先咱们要建立一个本地文件夹框架

 

 

用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

相关文章
相关标签/搜索