前端架构师-week5-egg.js+云Mongodb快速入门

news2024/11/16 3:43:06

目录

下载项目模版功能实现流程分析+egg.js简介

egg.js

官网

初始化

云 mongodb 

云 mongodb 开通

本地 mongodb 安装

mongodb 使用方法

通过 egg.js 框架添加新的API

云 mongodb 开通 + 本地 mongodb 调试技巧讲解

egg.js 接入 mongodb 方法

云 mongodb 如何连接公网


下载项目模版功能实现流程分析+egg.js简介

// commands/init/lib/index.js 中前提代码

  async exec() {
    try {
      // 1. 准备阶段
      const projectInfo = await this.prepare();
      if (projectInfo) {
        // 2. 下载模板
        log.verbose('projectInfo', projectInfo);
        await this.downloadTemplate();
        // 3. 安装模板
        
      }
    } catch (e) {
      log.error(e.message);
    }
  }
  downloadTemplate() {
    // 1. 通过项目模版API获取项目模版信息
    // 1.1 通过 egg.js 搭建一套后端系统
    // 1.2 通过 npm 存储项目模版
    // 1.3 将项目模版信息存储到 mongodb 数据库中
    // 1.4 通过 egg.js 获取 mongodb 中的数据并且通过 API 返回
  }

egg.js

官网

官网地址: https://eggjs.org/zh-cn/

初始化

初始化和项目启动方法:

# 初始化
mkdir egg-example && cd egg-example
npm init egg --type=simple
npm i

# 项目启动
npm run dev
open http://localhost:7001

 大家可以试试:npm init imooc-cli 有惊喜

思考:为什么 npm init egg 可以初始化 egg 项目?

答案:npm init 默认情况下会把当前目录(执行命令的目录)作为一个 npm 项目去初始化。但是在 npm init 后面加上一个命令的话,如 imooc-cli,就会去执行 imooc-cli 命令。会去调用 create-imooc-cli 包、create-egg 包。

云 mongodb 

云 mongodb 开通

地址:https://mongodb.console.aliyun.com/,创建实例并付款即可

本地 mongodb 安装

地址:https://www.runoob.com/mongodb/mongodb-tutorial.html

mongodb 使用方法

地址:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

通过 egg.js 框架添加新的API

 

        1. 在 controller 下面创建一个新的 js 文件,project.js 。 

        2. router.js 当中修改配置。

'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const { router, controller } = app;
  router.get('/', controller.home.index);
  router.get('/project', controller.project.index);
  router.get('/project/template', controller.project.getTemplate);
};

        3. project.js 文件中加入内容

'use strict';

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

class ProjectController extends Controller {
  index() {
    const { ctx } = this;
    ctx.body = 'your project';
  }
  // 获取项目/组件的代码模板
  getTemplate() {
    const { ctx } = this;
    ctx.body = 'get template';
  }
}

module.exports = ProjectController;

        4. 访问 127.0.0.1:7001/project,会在页面中显示  'your project'。

        5. 项目未上线,域名怎样指向 127.0.0.1 呢?

                方式一:改动 hosts 文件,sudo vim /etc/hosts

                方式二:下载 SwitchHosts 软件,更为推荐

云 mongodb 开通 + 本地 mongodb 调试技巧讲解

启动:

# 先创建/Users/sam/data/db
mongod --dbpath=/Users/sam/data/db

更多使用细节请看菜鸟教程文档 

egg.js 接入 mongodb 方法

1. imooc-cli-dev-server/app 目录下新建 utils/mongo.js

2. 可以使用 mongodb 提供的默认库,为了加快进度可以使用下面的

npm install -S @pick-star/cli-mongodb

3. imooc-cli-dev-server/config 目录下新建 db.js

'use strict';

/** MONGODB **/
const mongodbUrl = 'mongodb://sam:123456@localhost:27017/imooc-cli';
const mongodbDbName = 'imooc-cli';

module.exports = {
  mongodbUrl,
  mongodbDbName,
};

4. utils/mongo.js 文件内容

'use strict';

const Mongodb = require('@pick-star/cli-mongodb');
const { mongodbUrl, mongodbDbName } = require('../../config/db');

function mongo() {
  return new Mongodb(mongodbUrl, mongodbDbName);
}

module.exports = mongo;

5. app/controller/project.js 接入 mongodb

'use strict';

const Controller = require('egg').Controller;
const mongo = require('../utils/mongo');

class ProjectController extends Controller {
  // 获取项目/组件的代码模板
  async getTemplate() {
    const { ctx } = this;
    const data = await mongo().query('project');
    ctx.body = data;
  }
}

module.exports = ProjectController;

云 mongodb 如何连接公网

        云 mongodb 刚开通下来是没有公网地址的,在mongodb实例  数据库连接 中去'释放公网地址'。

ConnectionStringURI使用说明:

        ***** 替换为自己的密码,删掉 admin?...... 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql深分页

第一种:主键自增id情况: 未改: select * from wx_product_category_info where category_name_cn#{categoryNameCn} and category_type#{categoryType} order by id asclimit #{pageNum}, #{pageSize};在普通的limit条件下,如果…

如何通过appuploader把ipa文件上传到App Store教程步骤

​ iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store!​ 下面进行步骤介绍!​ 利用Appuploader这个软件,可以在Windows、Linux或Mac系统中申请ios和上传IPA到App Store Connect。​ 非常的方便,没有Mac也可以…

回炉重造十三----Docker的运用

1、Docker和虚拟机的区别 两者的区别 虚拟化环境下每个 VM 是一台完整的计算机,在虚拟化硬件之上运行所有组件,包括其自己的操作系统。 容器之间可以共享操作系统,比起 VM 被认为是更轻量级.且与 VM 类似,每个容器都具有自己的文件系统、CPU…

42电机插座接线可以用PH2.0冷压端子

文章目录 42电机插座接线可以用PH2.0冷压端子概述笔记备注END 42电机插座接线可以用PH2.0冷压端子 概述 设备上的42电机在我不断调整电机安装位置时, 接线从插孔中折断了. 问厂家, 他们的线也是定制的. 另外, 他是销售, 不清楚具体插座的型号和插座要用的冷压端子是哪种. 因为…

Java 关键字之:package与import

一、package 关键字 为了更好的实现项目中类的管理,提供包的概念使用package声明类或者接口所属的包,声明在源文件的首行包,属于标识符,遵循标识符的命名规则、规范(xxxyyyzzz)、"见名知意"每“.”一次,就代…

windows 下安装Docker (WSL2)

测试环境: VMware Workstation 17 WinServer2022 docker 4.19 python3.8 第一步:环境准备: 1.开启虚拟化 2. 开启WSL、容器功能 重启服务器 第二步: 安装docker 桌面版:Get Docker | Docker Documentation 此时启动会…

Django框架之错误视图和HTTP方法装饰器

本篇主要记录如何定义视图,错误视图有哪些并如何实现自定义, HTTP方法装饰器定义及实现,还有csrf中间件设置位置及关闭。 定义视图 一般在views.py文件下定义 视图参数: 错误视图 400视图 当出现SuspiciousOperation异常并且代…

Linux Kernel内核整体架构(图文详解)

1,前言 本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。…

WPF 从0开始写笔记,全属性功能深度剖析 20230510

文章目录 FontFamilyFontWeightResizeModeAllowsTransparencyMarginCornerRadiusBorder.effectBlurRadiusdirectionVerticalAlignmentTargetTypeControlTemplateDataTemplate 和ControlTemplate的区别StrokePath控件Border FontFamily 在WPF中,FontFamily属性用于指…

5月第1周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年5月1日-5月7日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B站…

【C++】类型转换-static_cast、reinterpret_cast、const_cast、dynamic_cast

文章目录 1. C语言中的类型转换2. 为什么C需要四种类型转换3. C强制类型转换static_castreinterpret_castconst_castdynamic_cast 4.explicit5.RTTI6.考点 1. C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回…

网易云信 RTC 音频问题排查的挑战与实践

背景与挑战 实时通信(Real-Time Communication,RTC)音频技术是指将音频流实时传输到远程用户的技术,满足线上实时交互的诉求,广泛应用于在线教育、视频会议、直播、泛娱乐社交、金融、医疗、政企等场景。在 RTC PaaS…

组件通信的几种方式

组件通信的几种方式 父组件向子组件传值 在父组件中用自定义组件进行传值,自定义属性写到父组件调用子组件的那个标签中。在子组件中用props进行接收,props写到子组件中与data同级,props是一个数组,内容就是自定义属性的名字。 …

SD nand 与 SD卡的SPI模式驱动

文章目录 SD nand 与 SD卡的SPI模式驱动 1. 概述 2. SPI接口模式与SD接口模式区别 2.1 接口模式区别 2.2 硬件引脚 2.3 注意事项 3. SD接口协议 3.1 命令 3.1.1 命令格式 3.1.2 命令类型 3.2 响应 3.2.1 响应格式 4. SD nand(SD卡)结构描述…

内网渗透之域环境信息搜集

1.查看是否为域环境 net config workstation下面命令能否执行成功和computer brower服务是否开启有关 net view /domain2.查询域内的用户和组 查询域内的所有用户 net user /domain查询域内的所有用户(需要在域控上敲) dsquery user查询域内的某个用户 net user dbadmin /d…

代码随想录算法训练营day36 | 435. 无重叠区间,763.划分字母区间,56. 合并区间

代码随想录算法训练营day36 | 435. 无重叠区间,763.划分字母区间,56. 合并区间 435. 无重叠区间763.划分字母区间56. 合并区间总结 435. 无重叠区间 教程视频:https://www.bilibili.com/video/BV1A14y1c7E1/?spm_id_from333.788&vd_sou…

【Linux】安装node-v16.17.0-linux

【Linux】安装node-v16.17.0-linux 1 下载node-v16.17.0-linux-x64.tar.xz 下载地址:https://nodejs.org/zh-cn 2 解压文件 cd 到node-v16.17.0-linux-x64.tar.xz所在的路径 xz -d node-v16.17.0-linux-x64.tar.xz tar -xvf node-v16.17.0-linux-x64.tar 3 软…

vue2 框架运行原理剖析系列(一)之 new Vue()实例化过程到底做了什么!!!

一、vue 基础用法 1.1 引入vue 1.2 使用vue语法编写ui 1.3 实现数据绑定 示例代码如下 <div id"app">{{ message }} </div> <script> var app new Vue({el: #app,data: {message: Hello Vue!} }) </script>1.4 代码效果&#xff1a;使用浏…

4114 Flipping Game

4114 Flipping Game PTA | 程序设计类实验辅助教学平台 思路&#xff1a;我们定义f[i][j]表示当前已经进行了i轮&#xff0c;并且当前的两个串的不同的数的个数是j&#xff0c;就接下来我们考虑状态转移&#xff0c;首先是假设我们在不同的中挑选了x个进行反转&#xff0c;则需…

Go语言学习查缺补漏ing Day4

Go语言学习查缺补漏ing Day4 一、掌握iota的使用 请看下面这段代码&#xff1a; package mainimport "fmt"const (a iota_bc "ReganYue"dd1e iotaf iota )func main() {fmt.Println(a, b, c, d, d1, e, f) }思考一下输出结果会是什么&#xff1f; …