eggjs&sequelize使用教程一(环境搭建)

2023-11-06

前言

原来想写express+sequelize的,但是公司现在放弃了express,转战eggjs,所以这个的教程就以egg为基础

安装egg

官方有完整的教程

需要安装的模块 package.js

zengwe@zengwe-PC:egg-example$ cat package.json 
{
  "name": "example",
  "version": "1.0.0",
  "description": "",
  "private": true,
  "dependencies": {
    "egg": "^1.9.0",
    "egg-scripts": "^2.1.0",
    "egg-sequelize": "^3.1.0",
    "mysql2": "^1.5.0"
  },
  "devDependencies": {
    "autod": "^2.10.0",
    "autod-egg": "^1.0.0",
    "egg-bin": "^4.3.5",
    "egg-ci": "^1.8.0",
    "egg-mock": "^3.13.0",
    "eslint": "^4.10.0",
    "eslint-config-egg": "^5.1.0",
    "webstorm-disable-index": "^1.2.0"
  },
  "engines": {
    "node": ">=8.9.0"
  },
  "scripts": {
    "start": "egg-scripts start --daemon",
    "stop": "egg-scripts stop",
    "dev": "egg-bin dev",
    "debug": "egg-bin debug",
    "test": "npm run lint -- --fix && npm run test-local",
    "test-local": "egg-bin test",
    "cov": "egg-bin cov",
    "lint": "eslint .",
    "ci": "npm run lint && npm run cov",
    "autod": "autod"
  },
  "ci": {
    "version": "8"
  },
  "repository": {
    "type": "git",
    "url": ""
  },
  "author": "",
  "license": "MIT"
}

整体的结构目录

zengwe@zengwe-PC:egg-example$ tree ./ -I node_modules
./
├── app
│   ├── controller
│   │   └── home.js
│   ├── model
│   │   └── movie.js
│   ├── public
│   ├── router.js
│   └── service
│       └── test.js
├── appveyor.yml
├── config
│   ├── config.default.js
│   └── plugin.js
├── logs
│   └── example
│       ├── common-error.log
│       ├── egg-agent.log
│       ├── egg-web.log
│       └── example-web.log
├── package.json
├── package-lock.json
├── README.md
├── README.zh-CN.md
├── run
│   ├── agent_config.json
│   ├── agent_config_meta.json
│   ├── application_config.json
│   └── application_config_meta.json
└── test
    └── app
        └── controller
            └── home.test.js

配置sequelize

我在config目录下新建一个config.sequelize.js的文件用来放sequelize的配置,因为这个配置文件可能会有很多内容,包括sequelize全局钩子函数或者读写分离等等,所以单独分出一个文件,配置如下

'use strict';
const equelize = {
  dialect: 'mysql', // support: mysql, mariadb, postgres, mssql
  database: 'douban_test',
  host: 'localhost',
  port: '3306',
  username: 'root',
  password: '123456',
};
module.exports = equelize;

在config.default.js中引入

'use strict';
const sequelizeConfig = require('./config.sequelize');
module.exports = appInfo => {
  const config = exports = {};
  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1510991679580_9861';
  // add your config here
  config.middleware = [];
  config.sequelize = sequelizeConfig;
  return config;
};

启用sequelize模块

在config文件下的plugin.js中添加这个模块

'use strict';

// had enabled by egg
// exports.static = true;
exports.sequelize = {
  enable: true,
  package: 'egg-sequelize',
};
exports.security = {
  enable: false,
};

ps:这里关闭security的原因是不用每次动态的添加token,开发阶段很麻烦

在app的目录下建一个model的文件并建一个model

'use strict';
module.exports = app => {
  const { INTEGER, STRING } = app.Sequelize;
  const Movie = app.model.define('Movie', {
    id: {
      type: INTEGER,
      autoIncrement: true,
      primaryKey: true,
    },
    name: {
      type: STRING(100),
      allowNull: false,
    },
  }, {
    freezeTableName: true,
    tableName: 'z_movie',
    timestamps: false,
  });
  return Movie;
};

在homeController中试一次

'use strict';

const Controller = require('egg').Controller;

class HomeController extends Controller {
  * index() {
    const serviceRes = yield this.ctx.service.test.index();
    const result = yield this.app.model.Movie.findAll();
    console.log(result);
    this.ctx.body = 'hi, egg' + serviceRes;
  }
}

module.exports = HomeController;

上面是现在的controller的写法原来的是

module.exports = app => {
    return class HomeController extends app.Controller {
      * index() {
            const result = yield app.model.Movie.findAll();
            console.log(result);
            this.ctx.body = 'hi, egg' + serviceRes;
      }
}

module.exports = HomeController;

运行

npm run dev

zengwe@zengwe-PC:egg-example$ npm run dev

> example@1.0.0 dev /media/zengwe/Bcode/egg/douban/egg-example
> egg-bin dev

2017-11-19 23:14:54,132 INFO 12666 [master] egg version 1.11.0
sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules/sequelize/lib/sequelize.js:236:13
2017-11-19 23:14:57,327 INFO 12672 [model] SELECT VERSION() as `version` (7ms)
2017-11-19 23:14:57,354 INFO 12672 [model] SELECT 1+1 AS result (3ms)
2017-11-19 23:14:57,371 INFO 12666 [master] agent_worker#1:12672 started (3227ms)

bingo成功

访问 http://127.0.0.1:7001

2017-11-19 23:18:28,744 INFO 12683 [model] SELECT `id`, `name` FROM `z_movie` AS `Movie`; (2ms)
[ Movie {
    dataValues: { id: 1, name: '无间道' },
    _previousDataValues: { id: 1, name: '无间道' },
    _changed: {},
    _modelOptions: 
     { timestamps: false,
       validate: {},
       freezeTableName: true,
       underscored: true,
       underscoredAll: false,
       paranoid: false,
       rejectOnEmpty: false,
       whereCollection: null,
       schema: null,
       schemaDelimiter: '',
       defaultScope: {},
       scopes: [],
       hooks: {},
       indexes: [],
       name: [Object],
       omitNull: false,
       tableName: 'z_movie',
       sequelize: [Object],
       uniqueKeys: {} },
    _options: 
     { isNewRecord: false,
       _schema: null,
       _schemaDelimiter: '',
       raw: true,
       attributes: [Object] },
    __eagerlyLoadedAssociations: [],
    isNewRecord: false } ]

bingo成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

eggjs&sequelize使用教程一(环境搭建) 的相关文章

  • 解决Sequelize查询遇到的问题

    解决Sequelize查询遇到的问题 前言查主表全部数据及include xff08 订单表及请假表 xff09 定义一个数组 xff0c 然后遍历不满足条件的 xff0c 然后返回满足的条件 前言 这篇文章可能只适合我这个脑残来记录了 x
  • typescript egg mysql_egg-sequelize+typescript一对一关联查询错误

    这里我创建了两张表 xff0c 一张是文章表 xff0c 一张是文章类型表 文章表model app model Article ts import Application from 39 egg 39 export default fun
  • orm框架sequelize的where条件接受动态参数传入

    在nodejs项目中 xff0c 接口会接收从前台传来的查询参数 xff0c 接口里面根据请求参数动态查询数据库 xff0c 例如分页参数等等 xff1b sequelize官方文档中并没有提及如何做 xff0c 不过可以利用sequeli
  • eggjs

    https editor csdn net md not checkout 61 1 amp spm 61 1001 2014 3001 4503 https blog csdn net weixin 42304193 article de
  • Vue+Element-ui+SpringBoot搭建后端汽车租赁管理系统

    最近在做项目 花了一周的时间搭建了一个十分完备的汽车租赁后端管理系统 页面采用纯Vue2 Element ui搭建 后端采用Springboot Mybatis搭建 数据库采用Mysql 包括了登录验证 根据不同权限进入不同界面 数据增删改
  • SpringBoot基础(1)

    目录 SpringBoot基础 1 SpringBoot基础 2 SpringBoot基础 3 1 hello world 相当简单 pom xml文件中配置
  • @Value值注入及配置文件组件扫描方式

    spring配置文件对应的是父容器 springMVC配置文件产生的是子容器 前者一般配置数据源 事务 注解等 当然还可以进一步将一些配置细化到其他xml中 后者一般配置控制层相关的 如静态资源 视图解析器等 系统启动的时候 先初始化父容器
  • Spring Bean的管理(IOC 依赖注入)

    文章目录 Spring Bean 基于xml的实现 name定义别名的演示 scope作用域的演示 singleton 演示 prototype 演示 xml配置方式的依赖注入 创建对象 为对象中的值赋值 方式一 通过构造方式的注入属性值
  • FactoryBean和BeanFactory:Spring IOC容器的两个重要角色简介

    目录 一 简介 二 BeanFactory 三 FactoryBean 四 区别 五 使用场景 总结 一 简介 在Spring框架中 IOC Inversion of Control 容器是一个核心组件 它负责管理和配置Java对象及其依赖
  • Mybatis对数据库数据的查询

    简单类型的映射 返回的是简单基本类型 接口中的定义 int getAdminCount 返回数据库总共还几条数据 xml中具体的实现
  • 过滤器使用与bean注入

    1 web xml中各元素启动顺序 在项目启动时 监听器listener最先初始化 然后是过滤器filter 最后是servlet Spring监听器在启动时会读取spring配置文件 进行spring容器的初始化 springMVC的di
  • eggjs&sequelize使用教程一(环境搭建)

    前言 原来想写express sequelize的 但是公司现在放弃了express 转战eggjs 所以这个的教程就以egg为基础 安装egg 官方有完整的教程 需要安装的模块 package js zengwe zengwe PC eg
  • eggjs中使用jwt

    开发接口时需要生成token 和校验token egg jwt就是一个很不错的插件 下边就教大家如何使用 废话不多说 先看效果 开始教程 安装包 yarn add egg jwt 全局引入jwt config plugin js modul
  • gRpc指南

    本文翻译自官网 原文 https grpc io docs languages java quickstart 快速开始 下面通过一个简单的样例 让你快速上手基于java的gRpc的使用 前置条件 JDK7以上版本 获取示例代码 示例代码是
  • shardingsphere引发 java.lang.String cannot be cast to java.lang.Integer异常

    错误描述 mysql数据库查询sql在数据库连接工具中可以正常运行 在加入了shardingsphere的jar包的项目中抛如下异常 java lang ClassCastException java lang String cannot
  • SpringBoot注解详解:从核心到Web,从数据到测试,一网打尽

    总结的了平时学习springboot常用的一些注解 方便以后开发时可以阅览回忆 springboot的常用注解可以分为以下几类 核心注解 这些注解是springboot的基础 用于启动 配置和管理springboot应用 Web MVC注解
  • Spring AOP:面向切面编程的简介和实践

    目录 一 什么是AOP 二 AOP的核心概念 三 Spring AOP的实现方式 第一种 注解配置AOP 第二种 xml配置AOP 一 什么是AOP AOP Aspect Oriented Programming 即面向切面编程 是一种编程
  • Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause

    Exception in thread main org apache ibatis exceptions PersistenceException Error building SqlSession The error may exist
  • SpringBoot-yml配置文件的使用与优势

    目录 一 什么是yml配置文件 二 如何在SpringBoot中使用yml配置文件 三 如何在SpringBoot中注入yml配置文件的属性 Value注解 ConfigurationProperties注解 四 yml配置文件与prope
  • Spring Boot中如何编写优雅的单元测试

    单元测试是指对软件中的最小可测试单元进行检查和验证 在Java中 单元测试的最小单元是类 通过编写针对类或方法的小段代码 来检验被测代码是否符合预期结果或行为 执行单元测试可以帮助开发者验证代码是否正确实现了功能需求 以及是否能够适应应用环

随机推荐

  • 宝塔后渗透-添加用户_反弹shell

    更新时间 2022年11月21日 1 背景介绍 对于想拿到bt后台来说 非常的艰难 无非是通过bypass之后提权 直接拿到服务器的root权限 然后再去宝塔后台 当然 还有一种运气十分爆棚的方法 发现了bt的账密信息 可以直接登陆了bt后
  • 电磁兼容RE典型整改案例分析

    1 可视对讲门铃EMI解决方案 客户介绍 珠海某电子科技有限公司是一家专门从事智能家居和楼宇对讲生产 研发 销售为一体的科技型企业 经客户转介绍认识 因其有一个新研发的高端出口可视对讲系统在深圳宝安某检测公司进行空间 RE 辐射测试EN55
  • LVGL8学习之Flex布局2

    这一篇来学习Flex布局的把项目按行包裹 且让他们周围的控件平均 Arrange items in rows with wrap and even spacing 还是通过codeblock来模拟代码的运行 代码如下 void lv fle
  • vue高级特性

    Vue是一款流行的JavaScript框架 它可以帮助我们构建高效 可维护的Web应用程序 本篇文章中 我将给大家分享三个Vue的高级技术 并且详细地讲解它们的实现原理 动态组件 动态组件是Vue中非常有用的一项功能 它允许我们在不同的组件
  • 07:STM32----ADC模数转化器

    目录 1 简历 2 逐次逼近型ADC 3 ADC基本结构 4 输入通道 5 规则组的4种转换模式 1 单次转化 非扫描模式 2 连续转化 非扫描模式 3 单次转化 扫描模式 4 单次转化 扫描模式 6 触发控制 7 数据对齐 8 转化时间
  • Unity面试题:热更新篇

    请简要介绍Unity热更新的原理和实现方式 答 Unity热更新的原理是通过将游戏的资源和代码分离 将代码部分放置在服务器端 游戏启动时通过网络下载更新的代码并动态加载 以达到实现热更新的目的 实现方式包括AssetBundle ILRun
  • 查看是否有主键_详解MySQL数据库主键信息及无主键表

    概述 总结一下MySQL数据库查看无主键表的一些sql 一起来看看吧 1 查看表主键信息 查看表主键信息 SELECT t TABLE NAME t CONSTRAINT TYPE c COLUMN NAME c ORDINAL POSIT
  • 弱网测试出现的问题解决思路

    摘自弱网测试时碰到的问题和解决方案再加上自己的一些遇到的解决 1 没进入到后台 可以在前端请求开始时候加个定时器 在请求完毕 或者一定时间 删除定时器 2 现象 用户登录应用时下载初始化数据 下载过程中因网速太慢点击取消并重新登录 数据初始
  • Pytorch 基础之张量索引

    本次将介绍一下 Tensor 张量常用的索引与切片的方法 1 index 索引 index 索引值表示相应维度值的对应索引 a torch rand 4 3 28 28 print a 0 shape 返回维度一的第 0 索引 tensor
  • jfinal-admin 后台框架永久开源

    jfinal admin 是什么 jfinal admin是一个基于jfinal的后台管理开发框架 能帮助你使用很少的时间和代码量开发出功能完备的管理后台 最新代码请切换到 develop 分支 集组织机构管理 用户管理 角色管理 菜单管理
  • C语言【判断一个整数是否为素数】

    include
  • U-Boot命令大全(功能参数及用法)

    本文转载至 http www cnblogs com farsight2011 p 3301126 html U Boot上电启动后 按任意键可以退出自动启动状态 进入命令行 U Boot 2010 03 Sep 25 2011 16 18
  • NZ系列工具NZ02:VBA读取PDF使用说明

    分享成果 随喜正能量 时光绽放并蒂莲 更是一份殷殷嘱托 更是一份诚挚祝福 是一份时光馈赠 又是一份时光陪伴 我的教程一共九套及VBA汉英手册一部 分为初级 中级 高级三大部分 是对VBA的系统讲解 从简单的入门 到数据库 到字典 到高级的网
  • Java学习日记10——Java中的变量及其传递

    Java学习日记10 变量及其传递 引用类型和基本类型变量的传递区别 变量的定义在前面已经讲解过了 点击这里 可以查看原文 这里的分类会略微不通过与之前 这里的变量主要分为字段变量和局部变量 1 在存储角度来看 字段变量是对象的一部分 存放
  • 【K8S】kubernetes集群架构与组件

    文章目录 K8S kubernetes集群架构与组件 kubernetes 组件 master组件 node组件 整体流程 POD终止过程 K8S kubernetes集群架构与组件 kubernetes 组件 K8S是属于主从设备模型 M
  • 华为OD机试真题 Java 实现【记票统计】【牛客练习题】

    一 题目描述 请实现一个计票统计系统 你会收到很多投票 其中有合法的也有不合法的 请统计每个候选人得票的数量以及不合法的票数 注 不合法的投票指的是投票的名字不存在n个候选人的名字中 数据范围 每组输入中候选人数量满足 1 n 100 总票
  • 一个将字符串转驼峰式的函数

    function camelCase str return str split map v gt v replace b w g function fl return fl toUpperCase jion camelCase hello
  • MediaScannerService研究

    2019独角兽企业重金招聘Python工程师标准 gt gt gt MediaScannerService研究 侯 亮 本文以Android 5 1为准 1 概述 MediaScannerService是Android平台提供的一个用于扫描
  • 通过navigator判断运行环境

    一 Navigator是什么 Navigator 对象包含有关浏览器的信息 二 参数 1 用户代理 navigator userAgent 用户代理 Mozilla 5 0 Windows NT 10 0 WOW64 AppleWebKit
  • eggjs&sequelize使用教程一(环境搭建)

    前言 原来想写express sequelize的 但是公司现在放弃了express 转战eggjs 所以这个的教程就以egg为基础 安装egg 官方有完整的教程 需要安装的模块 package js zengwe zengwe PC eg