vue项目调用知晓云数据

前言

什么是知晓云?
知晓云是通过 BaaS(Backend As A Service)、FaaS(Function As A Service)组合而成的 Serverless 无服务架构,集成最新的工具、组件、第三方服务 ,为小程序、Web、App 提供强大且便宜的后端云服务。它可以免去了小程序开发中服务器搭建、域名备案、数据接口实现等繁琐流程,让开发者专注于业务逻辑的实现,使得开发小程序,门槛更低,效率更高。

简单讲就是,你在开发小程序时,只需要设计好业务逻辑,通过接入知晓云封装好的 SDK ,就可以调用知晓云所提供的服务,包括数据库、云函数、消息推送等。假如你只有简单的前端开发经验,通过使用知晓云,也能上线一个功能完整的小程序。
以上内容摘自知乎文章

本篇文章将介绍一个前端项目如何调用知晓云中存放的数据


一、操作步骤

1.找到开发文档,注册知晓云

在这里插入图片描述
由于本文介绍的是网页开发,所以选择web入门目录
:注册账号时填的邮箱号就是用户名

2.配置安全域名

在这里插入图片描述

在这里插入图片描述
选好要放数据表的应用,在下方写域名的地方输入要用这个应用的域名(本地开发时,就填本机的主机号和端口号;部署到服务器后就写相应的域名即可)

3.导入知晓云js sdk

控制台输入:
npm install minapp-sdk 或者 yarn add minapp-sdk

4.知晓云初始化配置

// js
// 引入知晓云SDK(软件开发工具包)
import minappSdk from 'minapp-sdk'
export default {
  install(app){
    // 知晓云初始化
    const BaaS = minappSdk
    const clientID = '请根据自己的应用填写' // 应用Id
    BaaS.init(clientID)
    BaaS.auth.login({username: '用户名', password: '密码'}).catch(err=>{
      console.log('知晓云SDK: init',err.message) //for debug
    })
  }
}

5.创建数据表

在这里插入图片描述
可以事先准备好数据表,再按上图步骤导入

6.写调用逻辑

以我创建的一张繁简字对照表为例

目标:我需要获取数据表中的字所对应的首字母initial、简体simple、繁体complicated三个字段对应的内容,呈现在我所准备的页面上,并且能实现分页查询全部内容单个字查询两个基本功能

// js
// 1、查询繁简对照表的全部内容
const tableName = 'fanjianziduizhaobiao';
export async function queryDataFromFanjianziduizhaobiao(offsetNum) {
  try {
    // 实例化一个 TableObject 对象,操作该对象即相当于操作对应的数据表
    let MyTableObject = new BaaS.TableObject(tableName);

    // 实例化一个 Query 对象,在该对象上添加查询条件
    let query = new BaaS.Query();

    let queryResult = await MyTableObject.setQuery(query).limit(45).offset(offsetNum).find();

    return queryResult.data.objects;
  } catch (error) {
    console.error('查询数据出错:', error);
    throw error; // 抛出错误
  }
}

在分页查询全部数据的代码中,通过setQuery(query).limit(45).offset(offsetNum)限定了一页展示45条数据;同时,由于翻页导致每页起始读取的数据会改变,所以offset方法被传入一个参数offsetNum,以适应改变(更多方法请参考知晓云开发文档)

// 2、条件查询 根据输入的简体
export async function queryCharacterFromFanjianziduizhaobiao(character) {
  try {
    let MyTableObject = new BaaS.TableObject(tableName);

    // 实例化一个 Query 对象,在该对象上添加查询条件
    let query = new BaaS.Query();

    // 编写查询条件
    query.compare('simple', '=', character);

    let queryResult = await MyTableObject.setQuery(query).find();

    return queryResult.data.objects;
  } catch (error) {
    console.error('查询数据出错:', error);
    throw error; // 抛出错误
  }
}

单个字查询功能通过query.compare('simple', '=', character);实现输入一个简体,获取对应的数据**(查询条件的书写方法同见开发文档)**

7.调用查询逻辑

以下涉及页面的内容就不详细分析了,直接上代码

 <div style="width: 100%; height: 500px; border: 2px solid #031E5D;">

   <!-- 查询全部 -->
     <div v-if="ifShow === 0">
         <div v-for="(group, initial) in groupedData" :key="initial">
             <h3>【{{ initial }}】</h3>
             <div style="display: flex; margin-bottom: 20px; margin-left: 20px;">
                 <p v-for="(item, index) in group" :key="index" style="margin-left: 5px; margin-right: 5px; color: #101010; font-weight: bold;">{{ item.simple }}→{{ item.complicated }}</p>
             </div>
         </div>
     </div>

     <!-- 部分查询 -->
     <div v-else-if="ifShow === 1">
         <h3>【{{ queryResult1.initial }}】</h3>
         <div style="display: flex; margin-bottom: 20px; margin-left: 20px;">
             <p style="margin-left: 5px; margin-right: 5px; color: #101010; font-weight: bold;">{{ queryResult1.simple }}→{{ queryResult1.complicated }}</p>
         </div>
     </div>

     <!-- 查询不到 -->
     <div v-else>
         <div style="margin-left: 10px; margin-top: 10px;">
             <h3>对照表中暂无此内容,请重新查询</h3>
         </div>
     </div>
     
 </div>
<script setup>
import { ref, onMounted, watch } from 'vue';
import { queryDataFromFanjianziduizhaobiao, queryCharacterFromFanjianziduizhaobiao } from '@/db/index.js';
// 初始页
const current = ref(1);
// 搜索框内容
const value = ref('');

let queryResult;
let queryResult1 = ref(null);
const offsetNum = ref(1);
const ifShow = ref(0);

// 搜索查询
const onSearch = async () => {
    try {
        if (value.value !== '') {
            const queryResult2 = await queryCharacterFromFanjianziduizhaobiao(value.value);
            if (queryResult2.length === 0) {
                ifShow.value = 2;
            } else {
                ifShow.value = 1;
                queryResult1.value = queryResult2[0];
            }
        } else {
            ifShow.value = 0;
        }
        
    } catch (error) {
      console.error('查询数据出错:', error);
    }
}


const groupedData = ref({});
// 分页查询
onMounted(async () => {
    
    const fetchDataAndProcessResult = async () => {
        try {
            queryResult = await queryDataFromFanjianziduizhaobiao(offsetNum.value);
            for (const key in queryResult) {
                const item = queryResult[key];
                const initial = item.initial;
                if (!groupedData.value[initial]) {
                groupedData.value[initial] = [];
                }
                groupedData.value[initial].push(item);
            }
        } catch (error) {
            console.error('发生错误:', error);
        }
    };

    fetchDataAndProcessResult();

    watch(offsetNum, () => {
        fetchDataAndProcessResult();
    });
});

// 翻页
const handlePageChange = () => {
    groupedData.value = {};
    offsetNum.value = (current.value - 1) * 45;
}



</script>

8.最终效果展示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值