udacity微信小程序后端笔记

对于后端这一块吧,耽误了好久,还特地去补习了SQL.

个人认为主要分为三个部分吧
1.业务逻辑
2.路由
3.数据下载

1.商品数据

业务逻辑

业务逻辑就是说要完成的什么事情


udacity微信小程序后端笔记_第1张图片

这里查询product表中所有的数据,并且保存在ctx.state.data中。

路由

udacity微信小程序后端笔记_第2张图片

路由这里把刚刚的业务逻辑和链接url绑定起来,那我们就可以通过链接访问数据库中的数据了。

下载数据

udacity微信小程序后端笔记_第3张图片

这里用赋值的方式把刚才的链接保存起来。


udacity微信小程序后端笔记_第4张图片
image.png

下载数据的话使用qcloud.request发起http请求,然后剩下的查api就好了。

2.下载详情数据

udacity微信小程序后端笔记_第5张图片

这里的detail是下载详情数据然后对查询到的数据,确保id是数字的时候后可以正确返回。正常返回的数据是一个数组,但是我们这里只有一条数据,所以适应array[0]这样的格式返回。

udacity微信小程序后端笔记_第6张图片
udacity微信小程序后端笔记_第7张图片

立即购买

udacity微信小程序后端笔记_第8张图片

这里面实现立即购买的业务逻辑,返回的是空

udacity微信小程序后端笔记_第9张图片

所以在http请求的时候,只要检测res.code是否是0就好了。

udacity微信小程序后端笔记_第10张图片

由于这里购买和用户相关,所以需要验证中间键。注意这里是post请求。

展现订单

udacity微信小程序后端笔记_第11张图片
/**
   * 获取已购买订单列表
   * 
   */
  list: async ctx => {
    let user = ctx.state.$wxInfo.userinfo.openId
     let list = await DB.query('SELECT order_user.id AS `id`, order_user.user AS `user`, order_user.create_time AS `create_time`, order_product.product_id AS `product_id`, order_product.count AS `count`, product.name AS `name`, product.image AS `image`, product.price AS `price` FROM order_user LEFT JOIN order_product ON order_user.id = order_product.order_id LEFT JOIN product ON order_product.product_id = product.id WHERE order_user.user = ? ORDER BY order_product.order_id', [user])
     // 将数据库返回的数据组装成页面呈现所需的格式
     let ret = []
    let cacheMap = {}
    let block = []
    let id = 0
     list.forEach(order => {
      if (!cacheMap[order.id]) {
        block = []
        ret.push({
          id: ++id,
          list: block
        })
         cacheMap[order.id] = true
      }
       block.push(order)
    })
     ctx.state.data = ret
  },
} 

这里主要合并了order_user和order_product,product三张表格,采用left join的方式

SELECT * FROM order_user LEFT JOIN order_product ON order_user.id = order_product.order_id LEFT JOIN product ON order.product_id = product.id

最后通过user进行查询,并且按照order_product.order_id进行排序。

对应映射如下


order_user.id --> id
order_user.user --> user
order_user.create_time --> create_time


order_product.id --> product_id
order_product.count --> count


product.name --> name
product.image -->image
product.price --> price



由于这里是get请求,所以这里路由可以和刚才设置一样。

你可能感兴趣的:(udacity微信小程序后端笔记)