多文件上傳雲數據庫

微信的雲數據庫爲非關係型JSON格式數據庫。所以處理上和關係型數據庫還是有一些區別的。
EG:我的博客信息
我們需要上傳的數據上傳的是雲數據庫。主要包括內容和圖片。圖片是上傳到雲存儲之中的。再上傳成功後,雲儲存也會返回一個對應的fileID。

所以在數據庫中存放的內容主要是:內容、圖片fileID、用戶標識openID、用戶暱稱、頭像、發佈時間

一、圖片上傳

在我們的微信中使用函數可以實現圖片上傳數據,但是隻能一次上傳一個,可以使用循環實現多圖上傳。

 wx.cloud.uploadFile({
      cloudPath:'blog/'+Date.now()+'-'+Math.random()*1000000+suffix,//雲端路徑
      filePath:item,//當前文件臨時路徑
      success:(res)=>{

      },
      fail:(err)=>{

      }
    })
    }

其中cloudPath爲求得雲端路徑,因爲上傳圖片不能重複,重複就會被覆蓋,所以我們要想好文件的名字這樣避免被覆蓋掉。
所以blog爲在雲端的文件夾+當前時間+一個數學隨機數*一堆0+後綴就組成它的名字。避免重複
後綴名通過正則表達式獲取

  //當前圖片路徑
  let item=this.data.images[i]
 //取到文件擴展名
  var suffix=/\.\w+$/.exec(item)[0]

並且成功後回給我們返回他的fileID
在這裏插入圖片描述

二、多數據插入雲數據庫

定義一個promiseArr數組來存放promiseArr對象

	let promiseArr = []
    for (var i = 0, len = this.data.images.length; i < len; i++) {
      //每次循環new出來一個新的Promise對象,resolve表示成功,reject表示失敗
      let p = new Promise((resolve, reject) => {
        let item = this.data.images[i]
        //取到文件擴展名
        var suffix = /\.\w+$/.exec(item)[0]
        //每次只能上傳一張照片
        wx.cloud.uploadFile({
          cloudPath: 'blog/' + Date.now() + '-' + Math.random() * 1000000 + suffix, //雲端路徑
          filePath: item, //當前文件臨時路徑
          success: (res) => {
            console.log(res.fileID)
            resolve()
          },
          fail: (err) => {
            console.log(err)
            reject()
          }
        })
      })
      promiseArr.push(p)
    }

這樣我們就可以通過promiseArr ,將獲得到圖片信息全部存進去,也就可以獲取對象了。

之後將我們所要傳遞的信息傳送到雲數據庫中即可。

Promise.all(promiseArr).then((res)=>{
      db.collection('blog').add({
        data:{  
          ...userInfo, //用戶信息
          content:content, //內容   openID自動生成
          img:fileIDs, //圖片
          createTime:db.serverDate(), //服務端時間
        }
      }).then((res)=>{
        wx.hideLoading()
        wx.showToast({
          title:'發佈成功',
        })
        //返回主頁並刷新
        wx.navigateBack()
      })
    }).catch((err)=>{
      wx.hideLoading()
      wx.showToast({
        title:'發佈失敗',
      })
    })

通過對數據庫集合的初始化、將數據之間存入數據庫集合中,將需要的數據通過其他事件或者全局變量獲取到。

源碼:GIThub源碼存放

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