返回顶部
首页 > 资讯 > 精选 >uniCloud-db组件与JQL语法的转换的方法是什么
  • 345
分享到

uniCloud-db组件与JQL语法的转换的方法是什么

2023-07-05 12:07:06 345人浏览 泡泡鱼
摘要

这篇“uniCloud-db组件与JQL语法的转换的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“uniCloud

这篇“uniCloud-db组件与JQL语法的转换的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“uniCloud-db组件与JQL语法的转换的方法是什么”文章吧。

点赞部分

用户点赞后,图标变蓝色,数量增加,且要把点赞用户的头像显示出来 头像下面是浏览量

uniCloud-db组件与JQL语法的转换的方法是什么

这个部分看着简单,但是需要做三个表的联表查询

改造之前的unicloud-db组件

      <!-- unicloud-db获取数据库数据 -->      <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> · 发布于{{data.province}}</view>            </view>          </view>          <!-- 内容部分 content -->          <view class="content">            <u-parse :content="data.content" :tagStyle="tagStyle"></u-parse>          </view>        </view>      </unicloud-db>

改造后: 把组件删掉,然后把骨架屏这里改成if,写一个状态,在下面写方法来控制骨架屏的状态

定义一个loadState变量,值默认为true, 网络请求之前是在data里定义变量collections写的,现在写到自定义方法中 然后新定义一个detailObj接收值

把所有的DOM结构中的data全部改成detailObj

因为这里新定义了值为detailObj,所以还得把所有的DOM结构中的data全部改成detailObj

<template>  <view class="detail">    <!-- 评论区以上的内容部分 container-->    <view class="container">      <!-- unicloud-db获取数据库数据 -->        <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> · 发布于{{detailObj.province}}</view>            </view>          </view>          <!-- 内容部分 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:"",        // 骨架屏状态        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:{      // 获取网络数据      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=>{          // 网络数据获取完成后将骨架屏状态重置为false          this.loadState = false;          // 把获取到的用户信息赋值          this.detailObj = res.result.data        })      }    }  }</script>

点赞部分渲染数据

现在把点赞部分放到else分支中去 然后给点赞部分渲染数据

<template>  <view class="detail">    <!-- 评论区以上的内容部分 container-->    <view class="container">      <!-- unicloud-db获取数据库数据 -->        <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> · 发布于{{detailObj.province}}</view>            </view>          </view>          <!-- 内容部分 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>              <!-- 点赞数不为0才显示数量,是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>

uniCloud-db组件与JQL语法的转换的方法是什么

这个部分看着简单,但是需要做三个表的联表查询

接下来是改一些细节 现在是通过id进行请求数据,是没有问题的,但是如果用户自己在浏览器搜索栏把id删了,直接搜url就加载不出数据

逻辑:在onload中判断有没有id,有就加载数据,没有就跳转回首页

    onLoad(e) {      // 判断有没有ID      if(!e.id){        this.errFun();        // 必须加return,否则后面的代码还会执行        return;      };      this.artId = e.id,      this.getData()    },    methods:{      // 错误处理方法      errFun(){        uni.showToast({          title:"参数有误",          icon:"none"        })        setTimeout(()=>{          uni.reLaunch({            url:"/pages/index/index"          })        },1000)      },

如果id是错误的,请求到的数据是没有data这个参数的,所以还需要对这一点进行判断 在网络数据请求的方法里面进行判断

      // 获取网络数据      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参数不存在吗,表示传递的参数id有误          if(!res.result.data){            this.errFun();            return;          }          // 网络数据获取完成后将骨架屏状态重置为false          this.loadState = false;          // 把获取到的用户信息赋值          this.detailObj = res.result.data        }).catch(err=>{          this.errFun();        })      }

以上就是关于“uniCloud-db组件与JQL语法的转换的方法是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: uniCloud-db组件与JQL语法的转换的方法是什么

本文链接: https://lsjlt.com/news/351614.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • uniCloud-db组件与JQL语法的转换的方法是什么
    这篇“uniCloud-db组件与JQL语法的转换的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“uniCloud...
    99+
    2023-07-05
  • 云开发进阶uniCloud-db组件与JQL语法的转换详解
    目录点赞部分改造之前的unicloud-db组件把所有的DOM结构中的data全部改成detailObj点赞部分渲染数据点赞部分 用户点赞后,图标变蓝色,数量增加,且要把点赞用户的...
    99+
    2023-03-14
    uniCloud-db组件与JQL语法转换 uniCloud 云开发进阶
  • mysql中datetime与date转换的方法是什么
    在 MySQL 中,可以使用 CAST() 函数或者 STR_TO_DATE() 函数来实现 datetime 与 date 之间的...
    99+
    2024-03-05
    mysql
  • C语言隐式类型转换与强制类型转换的方法是什么
    本篇内容主要讲解“C语言隐式类型转换与强制类型转换的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言隐式类型转换与强制类型转换的方法是什么”吧!类型转换数据有不同的类型,不同类型数...
    99+
    2023-06-25
  • java公历与农历转换的方法是什么
    Java中提供了一些库和方法来实现公历与农历的转换。1. 使用Java 8中的java.time包中的类来进行转换。这些类包括`Lo...
    99+
    2023-08-17
    java
  • CSS3的3D转换方法是什么
    这篇文章主要介绍了CSS3的3D转换方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS3的3D转换方法是什么文章都会有所收获,下面我们一起来看看吧。  ...
    99+
    2024-04-02
  • python把元组转换为列表的方法是什么
    要将元组转换为列表,可以使用内置函数list()。以下是使用list()函数将元组转换为列表的示例:pythontuple1 = (...
    99+
    2023-10-21
    python
  • c#二维数组行列转换的方法是什么
    在C#中,可以通过以下方法来进行二维数组的行列转换: int[,] originalArray = new int[3, 4] { ...
    99+
    2024-04-02
  • c语言字符转换为ascii的方法是什么
    要将C语言字符转换为ASCII码,可以使用C语言中的内置函数`int` `int(char c)`。该函数将字符作为参数传入,并返回...
    99+
    2023-09-16
    c语言
  • c语言ascii码转换字符的方法是什么
    在C语言中,可以使用`char`数据类型来表示字符,而ASCII码是一个整数值,可以通过将整数值赋给`char`类型变量来实现ASC...
    99+
    2023-09-04
    c语言
  • C语言unicode转换为中文的方法是什么
    在C语言中,将Unicode转换为中文的方法是通过使用宽字符类型(wchar_t)和相关的库函数来实现的。以下是一个示例代码: #i...
    99+
    2023-10-23
    C语言
  • c语言输出格式转换的方法是什么
    在C语言中,输出格式转换主要通过格式化输出函数`printf()`来实现。`printf()`函数可以根据指定的格式将数据输出到屏幕...
    99+
    2023-10-28
    c语言
  • c语言ascii码转换字母的方法是什么
    在C语言中,可以使用以下方法将ASCII码转换为字母: #include <stdio.h> int main() {...
    99+
    2024-03-02
    c语言
  • HTML转换属性的方法是什么
    本文小编为大家详细介绍“HTML转换属性的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML转换属性的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2024-04-02
  • Java数据转换的方法是什么
    今天小编给大家分享一下Java数据转换的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1 字符串转换成数据&nbs...
    99+
    2023-06-03
  • golang指针转换的方法是什么
    这篇文章主要介绍了golang指针转换的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang指针转换的方法是什么文章都会有所收获,下面我们一起来看看吧。一、指针的基本使用在Golang中,指针是...
    99+
    2023-07-05
  • sql行列转换的方法是什么
    在SQL中,可以使用PIVOT和UNPIVOT来实现行列转换,具体方法如下: PIVOT:将行数据转换为列数据。使用PIVOT时,...
    99+
    2024-04-09
    sql
  • oracle字段转换的方法是什么
    在Oracle数据库中,可以使用一些内置的函数来转换字段的数据类型或格式。以下是一些常用的方法: TO_CHAR:将日期、数字等...
    99+
    2024-03-15
    oracle
  • oracle行列转换的方法是什么
    在Oracle中,可以使用PIVOT和UNPIVOT命令来实现行列转换。 PIVOT:将行数据转换为列数据。例如,可以使用PIVO...
    99+
    2024-04-08
    oracle
  • windows下eml文件转换成word的方法是什么
    这篇文章主要介绍“windows下eml文件转换成word的方法是什么”,在日常操作中,相信很多人在windows下eml文件转换成word的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”windo...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作