将图片等信息提交到数据库当中

将图片等信息提交到数据库当中

1:在数据库文件夹server下的tools下新建一个数据库文件other.sql,在里面创建表单opinions,表单信息有

​ 1)id(必填项,主键)

​ 2)openid(必填项,用来关联用户信息,是用户的唯一标识符)

​ 3)src(选填项,用户上传的图片信息)

​ 4)wechat(选填项,用户反馈的微信号)

​ 5)opinion(必填项,用户反馈的建议)

​ 6)create_time(必填项,数据的创建时间)
在这里插入图片描述

在这里插入图片描述

2:用户提交信息,后端需要在数据库中找到相应的文件并作出修改或者查找,然后返回信息,这里使用Koa路由

1)koa是一个后端框架,

2)路由管理就是接收到不同的api请求,找到相应处理的文件,查到或者修改数据,返回处理的信息

3)koa路由,统一在server/routes/index.js文件中管理

在这里插入图片描述

3:这里需要提交信息的按钮在opinion.wxml里(@click=“submmit”)
在这里插入图片描述

​ 1)在这个文件内发起前端请求的信息,所以在相应的opinion.js文件内的methods中创建一个请求的方法submmit(),用来请求后端的方法是异步方法,这样不会影响页面的加载所以在前面加一个async用来辨明这是一个异步方法在这里插入图片描述

​ 2)在submmit方法中添加请求方法,使用微信小程序自带的请求接口wx.request({......})

在这里插入图片描述

​ 3)在这里面将里面的参数改成自己的参数

		(1)在server/routes/index.js路由管理文件里,新添加一条路由,在里面添加我们自定义的路由链接`createopinion`,这个链接主要是向数据库插入我们所需要提交的信息的,后面的`controllers.createopinion`这个路由指向了后端的处理文件

在这里插入图片描述

​ (2)在文件夹server/controllers下创建一个文件createopinion.js文件
在这里插入图片描述

​ (3)在前端文件opinion.js中刚刚创建的方法submmit下的wx.request方法下添加元素

​ (3.1) url元素里的http://localhost:5757是指我们服务器的信息,weapp是所有路由信息的前缀,createopinion是我们刚刚在数据库文件下添加的路由;

​ (3.2)method元素里指的是请求方法POSTGET(插入数据,删除数据,修改数据,请求方法都是POST,查询数据请求方法就是GET);

​ (3.3)data是我们要向后端传递的数据,这个数据我们可以先在wx.request方法外定义

​ (3.4)openid是用户的唯一标识,这样我们才能知道是哪个用户提交的(使用微信自带的获取方法wx.getStorageSync()获取得到的用户信息userinfo里的openId)

在这里插入图片描述

success:function(res){}是前端请求成功后可以执行的,在这里我们在里面添加一个打印信息,如果前端请求成功就会打印信息

在这里插入图片描述

​ wx.request方法内的全部代码:
在这里插入图片描述

4:在需要调用submmit方法的地方添加点击事件调用
在这里插入图片描述

5:在后端server/controllers/createopin![image-20201001111607680](D:\text\images\image-20201001111607680.png)ion.js这个后端操作文件里处理刚刚在前端的请求信息

​ 1)引入数据库,引入的是数据库文件夹server/qucloud.js文件,qucloud.js是mysql的软件工具包

​ 2)接收请求信息(module.exports是nodejs的一个模板语法用来向前端暴露后面跟着的代码返回的信息,ctx这个参数里包含的是前端opinion.js发送过来的请求的信息)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ETP8HGWr-1605459288257)(D:\text\images\image-20201001122325245.png)]

3)`ctx.reque.body`获取前端传递过来的data元素,将获取到的元素保存到数据库中刚刚创建的表opinions当中

在这里插入图片描述

​ 4)调试小程序并输入相应的信息,可以在后端控制台当中看到已经获取到的请求信息

在这里插入图片描述

6:后端成功获取到消息后,需要向前端传递

​ 1)ctx.state.data这个语句向前端传递我们获取到的信息(code:0,说明我们传递成功)
在这里插入图片描述

7**:因为在前端与后端的联系都需要用到上面在opinion.js文件下wx.request()这个方法,像这样都需要用到的方法,我们就可以封装到工具函数(src/utils/util.js)中。**

1)在util.js里在创建一个request()方法,并给这个方法传递三个参数(url这个路由信息,method请求方法,data请求数据)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBuVHtwF-1605459288260)(D:\text\images\image-20201001125329603.png)]

​ 2)在需要调用这个方法的js文件内通过 import {post} from '@/util'引用

​ 3)在这个方法里return一个Promise对象(Promise容器相当于一个承诺,可以理解为一个容器,里面保存着某个未来才会结束的事件,这个事件通常是一个异步操作),在Promise中包含着一个箭头函数,这个箭头函数包含着两个参数(resolve,reject)
在这里插入图片描述

​ 3)将opinion.js文件内的wx.request()这个方法剪切到Promise对象里的箭头函数里
在这里插入图片描述

​ 4)在success中处理后端传递过来的数据,如果异步调用成功(也就是获取到code==0时),调用resolve函数在里面传入返回的信息。如果异步调用失败(也就是code!=0),调用reject函数,向里面传入失败的结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TF3c4wG-1605459288262)(D:\text\images\image-20201001131203839.png)]

​ 5)添加get和post请求方法,并将这两个方法暴露出去,给他们传两个参数(url,data),在get和post方法里返回上面的request方法,在request方法里需要传递三个参数(url,method参数,data)
在这里插入图片描述

​ 6)在opinion.js文件中引用这post方法和showModel方法

在这里插入图片描述

8:在opini.js的submmit()方法下请求后端

1)post方法里的两个参数(路由,data)

​ 2)在请求方法的前面加上await的意思是等到后端执行完成,并获取到返回数据后再往下执行
在这里插入图片描述

​ 3)在下面打印出返回来的方法,这两条语句是执行正确,也就是util.js文件里res.data.code==0时resolve方法返回的那条语句,

在这里插入图片描述

​ 4)如果执行错误了,需要用reject方法返回的语句,就需要try{}catch(e){}这个捕捉错误的方法来获取,将上面的两条语句粘贴到try{}里,当它执行成功是调用showModel()方法,提示已经提交成功;如果执行失败,也就是util.js文件里通过reject()方法返回的信息会被catch捕捉到,在里面打印出返回错误的信息,并调用showModel()方法在页面显示是失败提示

在这里插入图片描述

9:(完善前端文件)加一个限制,用户的反馈信息不能为空,如果为空,就显示不能提交信息,在submmit方法下加一个if语句,如果用户输入的信息,也就是data里的参数(word_count)>0,才往后端发送请求
在这里插入图片描述

10:(完善后端文件也就是server/controllers/createopinion.js文件)需要将后端获取到的元素插入到数据库当中,然后用try{}catch(e){}语句将其包裹起来,如果操作数据成功,就会到执行try{}里面的语句,并打印出执行成功的语句;

​ 1)await(必须等数据库操作完成后才能继续往下执行)

​ 2)mysql(调用上面const {mysql}里的mysql)

​ 3)opinions(是需要操作的表格)

​ 4)insert(插入语句)
在这里插入图片描述

如果操作数据库失败,就会到catch里面,执行失败的语句

	1)ctx.state={}(往前端传递错误)

​ 2)code==-1(说明执行出现错误)

​ 3)data:{}(将具体的错误传递到前端)

​ 4)e.sqlMessage(一般都是数据库的错误,所以在这里指定)

在控制台打印出执行错误

作数据库失败,就会到catch里面,执行失败的语句

	1)ctx.state={}(往前端传递错误)

​ 2)code==-1(说明执行出现错误)

​ 3)data:{}(将具体的错误传递到前端)

​ 4)e.sqlMessage(一般都是数据库的错误,所以在这里指定)

在控制台打印出执行错误
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值