微信小程序雲開發實現一個社區 Demo(補充)

之前寫了一篇文章介紹如何使用雲開發來實現一個社區 Demo: 微信小程序~雲開發的實現的一個社區 Demo(完結~)
得到很多小夥伴的認可但也出現了一些問題。

主要問題有:

  • 發佈的圖片不顯示,跨端發佈的圖片不顯示
  • 點贊功能優化
  • 數據庫不清晰
  • 需要添加回復功能

針對以上問題,我將代碼更新了,地址在:dongxi346/doughnut ,在README中有使用介紹,或者接着往下看。

ps:有幫助的朋友幫忙點個 star 多謝了。

這次更新主要是:

  • 解決以上出現的問題
  • 優化代碼結構

圖片問題原因分析
看過我源碼的朋友,應該知道,我當時存的是wx.chooseImage API返回的臨時圖片鏈接,當時爲了方便就直接這麼搞了。

但是既然是臨時圖片肯定會有失效的時候,而且跨端發佈的圖片也有問題(這裏指電腦上發佈和手機上發佈的圖片只能在各自端顯示)

根據開發習慣,我們肯定應該先將圖片上傳到服務器,服務器返回圖片鏈接後將這個圖片鏈接到數據庫中,雲開發這裏也提供了文件存儲功能,所以我們只需要做三步就能解決這個圖片問題。

第一步:
在選擇完圖片後,將臨時圖片鏈接保存好

第二步:
在要提交到數據庫的時候依次將圖片上傳到服務器獲取圖片鏈接

第三步:
將發佈的數據存儲到雲數據庫

我這裏爲了方便,直接將第一二步合併了,僞代碼如下:

chooseImage: function(event) {
    wx.chooseImage({
      count: 6,
      success: function(res) {
        // 設置圖片
        that.setData({
          images: res.tempFilePaths,
        })
        // 這裏清空一下,否則會出現圖片上傳重複問題
        that.data.images = []
        console.log(res.tempFilePaths)
        for (var i in res.tempFilePaths) {
          // 將圖片上傳至雲存儲空間
          wx.cloud.uploadFile({
            // 指定要上傳的文件的小程序臨時文件路徑
            cloudPath: that.timetostr(new Date()),
            filePath: res.tempFilePaths[i],
            // 成功回調
            success: res => {
            // 獲取到服務器圖片鏈接地址
              that.data.images.push(res.fileID)
            },
          })
        }
      },
    })
  },
  /**
   * 圖片路徑格式化
   */
  timetostr(time){
    var randnum = Math.floor(Math.random() * (9999 - 1000)) + 1000;
    var str = randnum +"_"+ time.getMilliseconds() + ".png";
    return str;
  },

第三步就是數據庫的添加操作了,圖片字段直接存that.data.images的值就行了

點贊功能優化
原因主要是之前的數據庫設計不清晰,點贊應該放在單獨的一個數據庫表中,不應該依賴於文章。

實現的過程可參考源碼 文章詳情源碼

數據庫不清晰
原因主要是剛開始實現這個 Demo 沒想那麼細,只想到實現功能了,數據表的設計不夠仔細。數據庫設計這塊的知識我也是外行,目前我的設計思路是表結構儘可能的單一。

可查看 項目 README 中的使用介紹

添加回復功能
社區 Demo 沒有回覆功能也說不過去,所以簡單加上了,UI 很醜,但是基本實現了簡單的回覆功能

實現的過程可參考源碼 回覆功能源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章