zoukankan      html  css  js  c++  java
  • 真香.小程序云开发(时光邮局小程序)

    本文已发布在西瓜君的个人博客,原文传送门

    前言

    沉寂了一段时间,西瓜君终于又回来了,偶然得知了云开发这个东西,感觉很香。于是自己空闲时间采用小程序云开发整了一个小程序。

    项目已开源,托管在github上:TimePostOffice

    • 个人小程序-“TimePostOffice(时光邮局)”
      小程序码

    开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。
    云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。


    我就不吹了,文档 传送门,下面就开始介绍开发(踩坑)过程

    1. 模板搭建

    技术栈:采用的是基于React的 Taro,版本 v1.3.4,安装好Taro环境之后,开始用cli创建一个云开发模板

    taro init mypro

    然后就是一些选择,"默认模板"选择“云开发模板”,然后就创建好了。

    2. 申请小程序 appid

    云开发必须要有appid,所以必须先 申请小程序 ,拿到appid之后填入 project.config.json,参考 微信小程序云开发模板

    3. 把模板小程序跑起来

    1. 进入到 client 目录,执行下面的操作安装依赖包

    npm i

    1. 执行下面命令,打包预览小程序

    npm run dev:weapp

    1. 打开微信开发工具,导入项目(目录是项目根目录),即可预览

    4. 开通云开发、创建环境

    创建了第一个云开发小程序后,在使用云开发能力之前需要先开通云开发。在开发者工具工具栏左侧,点击 “云开发” 按钮即可打开云控制台、根据提示开通云开发、创建云环境。默认配额下可以创建两个环境,各个环境相互隔离,每个环境都包含独立的数据库实例、存储空间、云函数配置等资源。每个环境都有唯一的环境 ID 标识,初始创建的环境自动成为默认环境。

    云环境配置好了之后,整个流程就可以跑通了

    踩坑

    • 我的前端请求模板
    //设置用户
    setUser: (userInfo)=>{
        return Taro.cloud
            .callFunction({
                name: "controller",
                data: {
                    api:'setUser',
                    payload: userInfo
                }
            })
            .then(res => res)  
            .catch(err => err)
    }
    
    • 我的云函数接口模板
    let { api, payload = {}, userInfo: { openId } } = event
    
    //新建用户&获取数据库中的用户
    if (api === 'setUser') {
        return db.collection('User').where({openId,}).get()
            .then(res=>{
                if(res.data[0]){
                    return res.data[0]
                }else{
                    payload.openId = openId
                    return db.collection('User').add({
                        data: payload
                    })
                        .then(res => {
                            return { code: 'success', msg: '插入数据成功' }
                        })
                        .catch(err => {
                            return { code: 'fail', msg: '插入数据失败' }
                        })
                }
            })
    }
    
    • 发送邮件采用的是 nodemailer邮箱开通POP3/SMTP服务,nodemailer配置里面密码是开通POP3/SMTP服务之后拿到的授权码

    • 巨坑(云函数同步代码执行完了,异步还没执行完,会直接销毁内存)(本地调试不会,云端会)

    这个坑卡了我两天时间,在我的发送邮件的云函数 nodemailer, 所有的异步操作都使用了 async/await 来变为同步操作,解决了这个bug

    尾声

    写这个东西纯粹是一时兴起,在这期间踩了一些坑,小的就没写出来了,如果有朋友碰到,可以在下面回复提出来,我知道的可以交流一下。也欢迎大家使用这个小程序


    以上

  • 相关阅读:
    观察 HTML中id和name 的差异,被微软忽悠过的同学自动举手
    ScottGu中文博客: 新捆绑和缩小支持(ASP.NET 4.5系列)
    在证书存储区中找不到清单签名证书
    HTML中的转义字符
    SQL 查询本周/本月/本季度/本年的数据
    sql STUFF用法
    jQuery UI Autocomplete 体验
    你必须知道的ADO.NET(二)了解.NET数据提供程序
    ASP.NET MVC的全球化方案
    MongoDB是什么?
  • 原文地址:https://www.cnblogs.com/bloglixin/p/12195213.html
Copyright © 2011-2022 走看看