最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

云開發(fā)進階uniCloud-db組件與JQL語法的轉換詳解

 更新時間:2023年03月14日 12:00:33   作者:新手一號  
這篇文章主要為大家介紹了云開發(fā)進階uniCloud-db組件與JQL語法的轉換詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

點贊部分

用戶點贊后,圖標變藍色,數(shù)量增加,且要把點贊用戶的頭像顯示出來 頭像下面是瀏覽量

這個部分看著簡單,但是需要做三個表的聯(lián)表查詢

改造之前的unicloud-db組件

      <!-- unicloud-db獲取數(shù)據(jù)庫數(shù)據(jù) -->
      <unicloud-db :where="`_id=='${artId}'`" v-slot:default="{data, loading, error, options}" :getone="true" :collection="collections">
        <view v-if="error">{{error.message}}</view>
        <view v-else-if="loading">
          <u-skeleton
          	    rows="5"
          	    title
          		loading
          	></u-skeleton>
        </view>
        <view v-else>
          <!-- 標題部分 -->
          <view class="title">{{data.title}}</view>
          <!-- 標題下面的用戶信息部分 userinfo -->
          <view class="userinfo">
            <view class="avatar">
              <image :src="data.user_id[0].avatar_file ? data.user_id[0].avatar_file.url: '../../static/images/user-default.jpg'" mode="aspectFill"></image>
            </view>
            <view class="text">
              <view class="name">{{data.user_id[0].nickname? data.user_id[0].nickname : data.user_id[0].username}}</view>
              <view class="small">
                <uni-dateformat :date="data.publish_date" format="yyyy年MM月dd hh:mm:ss"></uni-dateformat> · 發(fā)布于{{data.province}}</view>
            </view>
          </view>
          <!-- 內(nèi)容部分 content -->
          <view class="content">
            <u-parse :content="data.content" :tagStyle="tagStyle"></u-parse>
          </view>
        </view>
      </unicloud-db>

改造后: 把組件刪掉,然后把骨架屏這里改成if,寫一個狀態(tài),在下面寫方法來控制骨架屏的狀態(tài)

定義一個loadState變量,值默認為true, 網(wǎng)絡請求之前是在data里定義變量collections寫的,現(xiàn)在寫到自定義方法中 然后新定義一個detailObj接收值

把所有的DOM結構中的data全部改成detailObj

因為這里新定義了值為detailObj,所以還得把所有的DOM結構中的data全部改成detailObj

<template>
  <view class="detail">
    <!-- 評論區(qū)以上的內(nèi)容部分 container-->
    <view class="container">
      <!-- unicloud-db獲取數(shù)據(jù)庫數(shù)據(jù) -->
        <view v-if="loadState">
          <u-skeleton
          	  rows="5"
          	  title
          		loading
          	></u-skeleton>
        </view>
        <view v-else>
          <!-- 標題部分 -->
          <view class="title">{{detailObj.title}}</view>
          <!-- 標題下面的用戶信息部分 userinfo -->
          <view class="userinfo">
            <view class="avatar">
              <image :src="detailObj.user_id[0].avatar_file ? detailObj.user_id[0].avatar_file.url: '../../static/images/user-default.jpg'" mode="aspectFill"></image>
            </view>
            <view class="text">
              <view class="name">{{detailObj.user_id[0].nickname? detailObj.user_id[0].nickname : detailObj.user_id[0].username}}</view>
              <view class="small">
                <uni-dateformat :date="detailObj.publish_date" format="yyyy年MM月dd hh:mm:ss"></uni-dateformat> · 發(fā)布于{{detailObj.province}}</view>
            </view>
          </view>
          <!-- 內(nèi)容部分 content -->
          <view class="content">
            <u-parse :content="detailObj.content" :tagStyle="tagStyle"></u-parse>
          </view>
        </view>
      <!-- 點贊部分 like -->
      <view class="like">
        <view class="btn">
          <text class="iconfont icon-good-fill"></text>
          <text>88</text>
        </view>
        <view class="users">
          <image src="../../static/images/user.jpg" mode="aspectFill"></image>
        </view>
        <view class="text"><text class="num">998</text>人看過</view>
      </view>
    </view>
  </view>
</template>
<script>
  const db=uniCloud.database();
  export default {
    data() {
      return {
        artId:"",
        // 骨架屏狀態(tài)
        loadState:true,
        tagStyle:{
          p:"line-height:1.7em;font-size:16px;padding-bottom:10rpx",
          // 圖像間隔,上下10,左右0
          img:"margin:10px 0"
        },
        // 用戶信息
        detailObj:null
      };
    },
    onLoad(e) {
      console.log(e);
      this.artId = e.id,
      this.getData()
    },
    methods:{
      // 獲取網(wǎng)絡數(shù)據(jù)
      getData(){
        // 將主表副表都查出一個臨時表來
        let artTemp = db.collection("quanzi_article").getTemp();
        let userTemp =  db.collection("uni-id-users").field("_id,username,nickname,avatar_file").getTemp();
        db.collection(artTemp,userTemp).where(`_id=="${this.artId}"`).get(
        {
          getOne:true
        }).then(res=>{
          // 網(wǎng)絡數(shù)據(jù)獲取完成后將骨架屏狀態(tài)重置為false
          this.loadState = false;
          // 把獲取到的用戶信息賦值
          this.detailObj = res.result.data
        })
      }
    }
  }
</script>

點贊部分渲染數(shù)據(jù)

現(xiàn)在把點贊部分放到else分支中去 然后給點贊部分渲染數(shù)據(jù)

<template>
  <view class="detail">
    <!-- 評論區(qū)以上的內(nèi)容部分 container-->
    <view class="container">
      <!-- unicloud-db獲取數(shù)據(jù)庫數(shù)據(jù) -->
        <view v-if="loadState">
          <u-skeleton
          	  rows="5"
          	  title
          		loading
          	></u-skeleton>
        </view>
        <view v-else>
          <!-- 標題部分 -->
          <view class="title">{{detailObj.title}}</view>
          <!-- 標題下面的用戶信息部分 userinfo -->
          <view class="userinfo">
            <view class="avatar">
              <image :src="detailObj.user_id[0].avatar_file ? detailObj.user_id[0].avatar_file.url: '../../static/images/user-default.jpg'" mode="aspectFill"></image>
            </view>
            <view class="text">
              <view class="name">{{detailObj.user_id[0].nickname? detailObj.user_id[0].nickname : detailObj.user_id[0].username}}</view>
              <view class="small">
                <uni-dateformat :date="detailObj.publish_date" format="yyyy年MM月dd hh:mm:ss"></uni-dateformat> · 發(fā)布于{{detailObj.province}}</view>
            </view>
          </view>
          <!-- 內(nèi)容部分 content -->
          <view class="content">
            <u-parse :content="detailObj.content" :tagStyle="tagStyle"></u-parse>
          </view>
          <!-- 點贊部分 like -->
          <view class="like">
            <view class="btn">
              <text class="iconfont icon-good-fill"></text>
              <!-- 點贊數(shù)不為0才顯示數(shù)量,是0就只顯示圖標 -->
              <text v-if="detailObj.like_count > 0">{{detailObj.like_count}}</text>
            </view>
            <view class="users">
              <image src="../../static/images/user.jpg" mode="aspectFill"></image>
            </view>
            <view class="text"><text class="num">{{detailObj.view_count}}</text>人看過</view>
          </view>
        </view>
    </view>
  </view>
</template>

這個部分看著簡單,但是需要做三個表的聯(lián)表查詢

接下來是改一些細節(jié) 現(xiàn)在是通過id進行請求數(shù)據(jù),是沒有問題的,但是如果用戶自己在瀏覽器搜索欄把id刪了,直接搜url就加載不出數(shù)據(jù)

邏輯:在onload中判斷有沒有id,有就加載數(shù)據(jù),沒有就跳轉回首頁

    onLoad(e) {
      // 判斷有沒有ID
      if(!e.id){
        this.errFun();
        // 必須加return,否則后面的代碼還會執(zhí)行
        return;
      };
      this.artId = e.id,
      this.getData()
    },
    methods:{
      // 錯誤處理方法
      errFun(){
        uni.showToast({
          title:"參數(shù)有誤",
          icon:"none"
        })
        setTimeout(()=>{
          uni.reLaunch({
            url:"/pages/index/index"
          })
        },1000)
      },

如果id是錯誤的,請求到的數(shù)據(jù)是沒有data這個參數(shù)的,所以還需要對這一點進行判斷 在網(wǎng)絡數(shù)據(jù)請求的方法里面進行判斷

      // 獲取網(wǎng)絡數(shù)據(jù)
      getData(){
        // 將主表副表都查出一個臨時表來
        let artTemp = db.collection("quanzi_article").getTemp();
        let userTemp =  db.collection("uni-id-users").field("_id,username,nickname,avatar_file").getTemp();
        db.collection(artTemp,userTemp).where(`_id=="${this.artId}"`).get(
        {
          getOne:true
        }).then(res=>{
          // 如果data參數(shù)不存在嗎,表示傳遞的參數(shù)id有誤
          if(!res.result.data){
            this.errFun();
            return;
          }
          // 網(wǎng)絡數(shù)據(jù)獲取完成后將骨架屏狀態(tài)重置為false
          this.loadState = false;
          // 把獲取到的用戶信息賦值
          this.detailObj = res.result.data
        }).catch(err=>{
          this.errFun();
        })
      }

以上就是云開發(fā)進階uniCloud-db組件與JQL語法的轉換詳解的詳細內(nèi)容,更多關于uniCloud-db組件與JQL語法轉換的資料請關注腳本之家其它相關文章!

相關文章

  • Firefox和IE兼容性問題及解決方法總結

    Firefox和IE兼容性問題及解決方法總結

    IE和Firefox(火狐)在JavaScript方面的不兼容及統(tǒng)一方法在本文做下總結,感興趣的朋友可以參考下
    2013-10-10
  • js實現(xiàn)網(wǎng)頁的兩個input標簽內(nèi)的數(shù)值加減(示例代碼)

    js實現(xiàn)網(wǎng)頁的兩個input標簽內(nèi)的數(shù)值加減(示例代碼)

    下面小編就為大家?guī)硪黄猨s實現(xiàn)網(wǎng)頁的兩個input標簽內(nèi)的數(shù)值加減(示例代碼)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Bootstrap框架安裝使用詳解

    Bootstrap框架安裝使用詳解

    這篇文章主要為大家詳細介紹了Bootstrap框架的安裝使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 簡單實現(xiàn)js上傳文件功能

    簡單實現(xiàn)js上傳文件功能

    這篇文章主要教大家如何簡單實現(xiàn)js上傳文件功能,代碼簡單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • javascript正則表達式基礎知識入門

    javascript正則表達式基礎知識入門

    很長時間沒看正則表達式了,碰巧今天用到,溫故知新了一把,這里記錄下來,分享給大家,都是些基礎的知識,重點給大家講解的是正則表達式中4種常用的方法,50% 的舉一反三練習中的原創(chuàng)。
    2015-04-04
  • JavaScript?element的Form表單生成方式

    JavaScript?element的Form表單生成方式

    這篇文章主要介紹了JavaScript?element的Form表單生成方式,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • JavaScript函數(shù)詳解

    JavaScript函數(shù)詳解

    本文由簡入深,詳細介紹了javascript的函數(shù)問題,非常的詳盡,非常的實用,這里推薦給大家,是篇不可多得的文章
    2015-02-02
  • js去空格技巧分別去字符串前后、左右空格

    js去空格技巧分別去字符串前后、左右空格

    js去空格想必大家多少都會點吧,在接下來的文章中為大家詳細介紹下如何分別去字符串前后,左邊,右邊空格,感興趣的朋友可以參考下
    2013-10-10
  • es6數(shù)組之擴展運算符操作實例分析

    es6數(shù)組之擴展運算符操作實例分析

    這篇文章主要介紹了es6數(shù)組之擴展運算符操作,結合實例形式總結分析es6數(shù)組擴展運算符具體原理、實現(xiàn)方法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • 用JS實現(xiàn)圖片輪播效果代碼(一)

    用JS實現(xiàn)圖片輪播效果代碼(一)

    這篇文章主要介紹了用JS實現(xiàn)圖片輪播效果代碼(一)的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06

最新評論

呼图壁县| 唐河县| 渑池县| 临颍县| 都江堰市| 临洮县| 横山县| 珲春市| 阜南县| 库尔勒市| 台北市| 白山市| 平潭县| 蒲江县| 马尔康县| 阿尔山市| 建平县| 伊宁市| 大埔县| 凤庆县| 静乐县| 清水河县| 阿克苏市| 崇州市| 古丈县| 清镇市| 雅安市| 都安| 贺兰县| 北京市| 北辰区| 广河县| 新津县| 肥城市| 衡水市| 涞水县| 奈曼旗| 沾化县| 舞阳县| 河东区| 会昌县|