4.9【微信小程序全栈开发课程】意见反馈(四)--提交反馈信息

简介: 1、创建后端操作文件先在后端server/controllers文件夹中创建操作文件createopinion.js,用来将从前端页面提交的数据,插入到opinions表中,创建完之后,页面目录如下

1、创建后端操作文件


先在后端server/controllers文件夹中创建操作文件createopinion.js,用来将从前端页面提交的数据,插入到opinions表中,创建完之后,页面目录如下


image.png


2、添加路由


在路由管理文件server/routes/index.js文件中添加路由


//需要添加的代码
router.post('/createopinion', controllers.createopinion)
//参考代码,无需粘贴
//module.exports = router


3、在前端添加提交方法


编辑src/pages/opinion/opinion.vue文件,在methods函数中添加summit方法,当意见的字数大于0时,可以提交数据,当意见的字数为0时,需要提示反馈内容不能为空


1)在src/util.js工具函数文件中封装提示框方法


//参考代码,无需粘贴
//export function showSuccess (text) {
//...
//)
//需要添加的内容
export function showModal (title, content) {
  wx.showModal({
    title,
    content,
    showCancel: false
  })
}


(2)在opinion.vue文件中引用工具函数文件中的showModal、post方法


//参考代码,无需粘贴
//<script>
//需要添加的部分
import {showModal,post} from '@/util'
//参考代码,无需粘贴
//export default {


(3)在methods函数中添加summit方法


//参考代码,无需粘贴
//uploadPicture () {
//...
//},
//需要添加的部分,不要忘记在上一行添加逗号隔开
async summit() {
  //当反馈的字数大于0时,可以提交反馈信息
  if(this.word_count > 0){
    try{
      // data是要提交给后端的数据,其中包含openid、opinion意见信息、src图片链接、wechat用户微信
      const data = {
        openid: this.userinfo.openId,
        opinion:this.opinion,
        src:this.src.join(","),
        wechat:this.wechat
      }
      //通过这行代码请求请求后端服务器,并传递参数data
      //await我们再ES6知识点中讲过,等后端执行完并获取到返回数据之后,再往下执行
      const res = await post('/weapp/createopinion', data)
      console.log("从后端返回的执行正确的信息是:",res)
      showModal("提交成功","已将你的反馈提交给了开发者~")
    }catch(e){
      //如果执行失败,util.js中的请求方法,会将返回信息的状态变成rejected
      //rejected状态的信息会被当成错误捕捉到
      console.log("从后端返回的执行错误的信息是:",e)
      showModal("提交失败","服务器出了一点错误~请稍后再试")
    }
  //当反馈的字数为0时,提示反馈内容不能为空
  }else{
    showModal("提交失败","反馈内容不能为空哦~")
  }
}


try…catch是捕获错误的语法,如果try中包含的代码块有错误,catch就会捕捉到错误并执行catch包含的代码块。


在这里能捕捉到在util.js中的请求方法,返回信息为rejected状态的数据


try{
}catch(e){
}



(4)在template页面提交按钮上面添加点击事件


<!-- 原代码 -->
<button>提交</button>
<!-- 修改为 -->
<button @click="summit">提交</button>


4、编辑后端操作文件


这里的后端操作文件也就是server/controllers/createopinion.js文件,填充下面的代码

//引入server/qcloud.js文件,qcloud.js文件是mysql的软件工具包,引入后我们也可以使用knex来操作数据库了
const {mysql} = require('../qcloud')
//module.exports是向外暴露代码,后面跟着箭头函数(就是函数的一种简写形式,在ES6语法的讲解中提过)
module.exports = async (ctx) => {
  //ctx.request.body用来获取post请求的参数
  const {openid,opinion,src,wechat} = ctx.request.body
  try{
    //knex语法,插入数据到opinions数据表中
    await mysql('opinions').insert({
      openid,opinion,src,wechat
    })
    // 执行的结果会保存到ctx.state中,也就是从后端返回到前端的数据
    // 执行成功返回的数据,code设为0
    ctx.state.data = {
      code: 0,
      msg: 'success'
    }
    console.log("执行成功")
  }catch(e){
    console.log("执行错误:",e)
    // 执行失败返回的数据,code设为-1
    ctx.state = {
      code: -1,
      data: {
        msg: '添加失败' + e.sqlMessage
      }
    }
  }
}


5、提交数据测试


(1)不填写反馈信息,点击提交,会出现错误提示


image.png


(2)填写反馈信息点击提交


控制台会打印出从后端传回来的信息


image.png


同时,打开终端,这时在server文件夹下面npm run dev启动的后端,也会打印出执行成功的信息


在src文件夹下面写console.log会在控制台中打印


在server文件夹下面写console.log会在终端中打印


image.png


目录
相关文章
|
3月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
777 7
|
3月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
786 1
|
3月前
|
存储 小程序 安全
微信的开发管理都需要配置什么?
【10月更文挑战第17天】微信的开发管理都需要配置什么?
40 0
|
3月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
565 0
|
2月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
43 0
在线课堂+工具组件小程序uniapp移动端源码
|
3月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
404 3
|
3月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
62 0
微信小程序更新提醒uniapp
|
5月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
123 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
5月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
130 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
|
5月前
|
存储 小程序 JavaScript