使用腾讯云函数开发nestjs后端项目

一、关于云函数的介绍

腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码, 是实时文件处理和数据处理等场景下理想的计算平台。 您只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。

简单点概述就是以下几点

  • 不需要自己单独购买服务器,节省开支
  • 不需要你专门的运维人员,为企业节省开支
  • 自动扩容,不用但是访问量大服务器不够用
  • 根据访问量收费,降低企业服务器成本
  • 开发人员专注写业务代码,不需要花太多时间去学习运维知识

二、腾讯云上注册账号及创建环境

  • 1、腾讯云注册自己的账号并且选择云开发产品

在这里插入图片描述

  • 2、选择新建nestjs应用
    在这里插入图片描述
    在这里插入图片描述

三、客户端使用脚手架创建项目

  • 1、安装 cloudbase/cli

    npm i -g @cloudbase/cli
    
  • 2、测试安装是否成功

    cloudbase -v
    
  • 3、登录云开发

    cloudbase login
    
  • 4、本地创建项目

    tcb new <appName> [template] 
    # 比如
    tcb new nest_test nest-starter
    
  • 5、根据区来创建
    在这里插入图片描述

    选择自己已经创建的环境,如果没有就 创建新环境,这时候会打开浏览器
    在这里插入图片描述

  • 6、构建出来的项目和自己用nestjs-cli构建出来的没什么区别,会nestjs开发的就可以无障碍的过度到云函数开发

四、在nestjs元函数中连接数据库,对数据的操作

  • 1、关于nestjs基础使用可以参考我github上一个项目,这套rbac权限系统管理的,我相信好好研读可以带你入门nestjs到项目开发,这里就不去介绍如何使用nestjs开发了。

    扫描二维码关注公众号,回复: 12825309 查看本文章
  • 2、关于腾讯云函数中使用数据库的说明

    目前各个厂商的云函数编程都是支持NoSql型的数据库,我们可以叫文档型数据库,大多数是采用mongodb数据库,对于传统(SQL)的关系型数据库MySQL支持不是很友好,都要单独配置甚至要付费操作

    在腾讯云函数编程中使用MySQL数据库要自行购买
    在这里插入图片描述

  • 3、在腾讯云控制面板上创建数据库

    注意上面的区域和当前元开发的环境,目前腾讯元函数开发使用的方式是用(区域+环境 = 数据库),新建集合就相当于新建表

    在这里插入图片描述

  • 4、在项目中安装连接数据库的SDK

    npm install @cloudbase/node-sdk
    
  • 5、简单的在nestjsd服务层连接数据库

    import cloudbase from '@cloudbase/node-sdk';
    
    // 注意以下几个参数是必填的,文档上说的是非必填
    const app = cloudbase.init({
          
          
      secretId: 'xx',
      secretKey: 'yy',
      env: 'xx',
      // 根据你创建的区域来写,目前只有上海(ap-shanghai)、广州(ap-guangzhou)
      region: 'ap-shanghai'
    })
    
    // 1. 获取数据库引用
    const db = app.database();
    
    • 关于初始化函数的参数参考地址

    • 关于secretIdsecretKey的获取方式

      需要创建一个子用户

      在这里插入图片描述
      在这里插入图片描述

    • env是指当前你用的环境ID

      在这里插入图片描述

  • 6、基本的数据库操作参考文档

    // 简单的举例
    async updateUser(data:any) {
          
          
      const {
          
          id, age, books} = data;
      return await db.collection('nest-collection')
        .doc(id)
        .update({
          
          
        age: _.inc(2),
        books: _.push(...books)
      })
    }
    

五、项目部署

目前云函数部署有两种方式

  • 1、本地通过命令方式部署

    查看package.json文件有一个命令

    ...
    "scripts": {
          
          
        ...
        "deploy": "cloudbase framework deploy",
    }
    ...
    

    直接运行命令,就可以部署项目

    npm run deploy
    
  • 2、在腾讯云控制面板上部署

    在这里插入图片描述

  • 3、两种方式部署的比较

    • 使用命令方式部署优势在于方便,可以一条命令执行部署操作,改完代码直接就可以进行部署,当然还有个好处就是,有很多模板,可以不用写dockfile直接部署
    • 使用控制面板部署,一般人都可以操作,比较傻瓜式

关于项目代码托管

在这里插入图片描述

几点说明

  • 目前只支持公开仓库的代码,不支持私有仓库的,未来可能会支持私有仓库来部署
  • 需要手动修改远程分支,不能自动获取远程仓库分支
  • 目前云函数还不支持环境变量,这也意味着你数据库信息会暴露出去

六、修改域名

  • 1、前提是你有自己的有效域名,可以创建子域名可以参考我之前的文章

  • 2、创建应用后系统会默认生成一个访问的url地址,这个一大坨的url地址,我相信你也不喜欢

  • 3、在腾讯云控制面板配置自己的域名

    在这里插入图片描述

  • 4、注意解析子域名的方式和上面博客写的有点区别,不是填写自己的IP是将腾讯云默认域名复制到里面去
    在这里插入图片描述

  • 5、用自己的域名访问项目

七、关于本人对目前云函数开发的反思

  • 目前技术还不算成熟,适合自己去了解和玩玩,真正的企业项目有点不适合,主要存在以下几个点
    • 厂商依赖太强,如果你现在选择了腾讯云的,未来切换阿里云,华为云的就很多不方便,有点选择一家这个项目一辈子就要这家公司的服务了
    • 配套设施还不完善,比如你想要用MySQL你要自己去开通服务,要收取费用的,对于redisrabbitmq等这类产品更加是没有做到按访问量收费,意味着你就要自己去购买对应的服务,随便买一个一年的费用也要3000多元,对于小型企业来说一台云服务器ECS一年的费用也大概就是这个价格
    • 可供选择的环境应用模板有限
    • 项目中敏感信息比如数据库账号和密码,支付类的密钥,不能添加到环境中。文档上有介绍使用.env的那也是在云托管的时候使用
    • 代码仓库是公开,不能使用私有仓库,私有仓库目前是云托管支持
  • 虽然有很多的不足,但是我们可以尝试用下,对于不是企业级的项目,可以玩玩无所谓,暴露出去的东西可以重置,特别是对于学生党来说是一个很好的选择,自己做作业,或者毕业设计来说,不需要买服务器直接使用云函数就提供接口,还可以使用静态页面托管静态文件
  • 未来我相信云函数会越来越完善,周边配套设施也会更加完善,开发人员只负责业务开发,不需要关系如何部署,企业也不需要专业的运维人员。

猜你喜欢

转载自blog.csdn.net/kuangshp128/article/details/114017805