手把手云開發小程序-(四)-uniclould增刪改查業務開發

一,導入uView

在開發小程序的時候,我習慣使用uView這個ui庫。主要是直接用當然比自己寫省時間。

它的官網:uView - 多平臺快速開發的UI框架 - uni-app UI框架 (gitee.io)

導入:

npm install uview-ui@2.0.31

然后按照官網進行配置:

1. 引入uView主JS庫

在項目根目錄中的main.js中,引入并使用uView的JS庫,注意這兩行要放在import Vue之后。

// main.js
import uView from "uview-ui";
Vue.use(uView);
2. 在引入uView的全局SCSS主題文件

在項目根目錄的uni.scss中引入此文件。

/* uni.scss */
@import 'uview-ui/theme.scss';
3. 引入uView基礎樣式

注意!

在App.vue中首行的位置引入,注意給style標簽加入lang="scss"屬性
<style lang="scss">/* 注意要寫在第一行,同時給style標簽加入lang="scss"屬性 */@import "uview-ui/index.scss";
</style>
4. 配置easycom組件模式

easycom功能可以讓用戶無需安裝、引用、注冊,三個步驟后才能使用組。uni-app為了調試性能的原因,修改easycom規則不會實時生效,配置完后,需要重啟HX或者重新編譯項目才能正常使用uView的功能。

// pages.json
{"easycom": {"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"},// 此為本身已有的內容"pages": [// ......]
}

二,使用unicluld完成增刪改查的業務功能

頁面開發就不說了,無非就是html+css,這里主要講講如何使用uniclould進行增刪改查.

為了簡化篇幅,我拿我小程序的標簽來做講解,增刪改查各講一個例子,通過這四個例子,大家也能很快學會uniclould的云對象使用,其他業務開發大差不差的.

2.1,新建標簽數據表

第一步肯定是需要在云服務器新建數據表,如下圖所示,新建一個即可:

2-1.png

啥也不用選,初始空表就行,就取名為tabsTable.

2.2,增加標簽

新建完數據表,就需要往數據庫中新增標簽.

于是先畫好前端ui,然后新建云對象tab:

2-2.png

前端調用接口:

async addTabs(){let num=Number(this.tabsNum)if(!num ||typeof num != 'number'){uni.showToast({title: "請輸入有效值",icon:'error',duration: 1500});return }const tabs = uniCloud.importObject('tab') // 導入云對象const res2 = await tabs.addTabs({token:this.token,tabsName:this.tabsName,tabsNum:num})this.tabsName=''this.tabsNum=''this.getTabs()uni.showToast({title: res2.msg,icon:'error',duration: 2000});
},

主要就是這兩行代碼:

  const tabs = uniCloud.importObject('tab') // 導入云對象const res2 = await tabs.addTabs({token:this.token,tabsName:this.tabsName,tabsNum:num})

不用去糾結uniCloud從哪來的,編譯的時候,框架會給我們自己引入的.這里直接這么用就行了,可以暫時把它理解成一個全局的對象.只要這樣引入tab云對象,就能調用該云對象的addTabs方法啦.

前端調用這個接口后,我們的后端也就是我們的tab云對象就需要去接收,它的寫法如下:

// 云對象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc語法提示教程:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
const db = uniCloud.database();
const userTable = db.collection('user');
const notesTable = db.collection('notes');
const tabsTable = db.collection('tabsTable');//這幾個是在引入數據表,因為要對數據表做增刪改查
const dbCmd = db.command
const {encrypt,decrypt} =require("common-object");
module.exports = {_before: function () { // 通用預處理器
?},/*** method1方法描述* @param {string} param1 參數1描述* @returns {object} 返回值描述*/async addTabs(param) {// 業務邏輯const {token,tabsName,tabsNum}=paramlet result=JSON.parse(decrypt(token))const openId=result.openid//增加標簽,首先要用該賬戶來判斷有沒有同名的標簽let res=await tabsTable.where({openId:dbCmd.eq(openId)}).get()let res2=res.data.filter(item=>{return item.tabsName==tabsName})if(res2.length>0){return {code:10001,msg:'該標簽名已存在'}}else{//新增標簽await tabsTable.add({tabsName:tabsName,openId:openId,tabsNum:tabsNum})return {code:10000,msg:'新增成功'}}}
}

這樣就完成了增加標簽的業務邏輯啦.

2.3,刪除標簽

刪除標簽也是類似的操作流程,先畫好頁面:

2-3.png

在頁面調用接口:

      //刪除標簽deleteTabs(){const that=thisuni.showModal({title: '提示',content: '刪除該標簽的同時會刪除該標簽下的筆記,確定要繼續?',success:async  function (res) {if (res.confirm) {let params={token:that.token,tabsSelect:that.deletetabsSelect}const tabs = uniCloud.importObject('tab')const res = await tabs.delTabs(params)that.deletetabsSelect=''that.getTabs()uni.showToast({//提示title:res.msg})  } else if (res.cancel) {console.log('用戶點擊取消');return}}});}

對應的云對象刪除標簽接口:

// 云對象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc語法提示教程:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
const db = uniCloud.database();
const userTable = db.collection('user');
const notesTable = db.collection('notes');
const tabsTable = db.collection('tabsTable');
const dbCmd = db.command
const {encrypt,decrypt} =require("common-object");
module.exports = {_before: function () { // 通用預處理器
?},//刪除標簽async delTabs(param){const {token,tabsSelect}=paramlet result=JSON.parse(decrypt(token))const openId=result.openid//先刪除該標簽下的所有筆記let res = await notesTable.where({openId:dbCmd.eq(openId),tabsSelect:tabsSelect}).remove()//然后刪除對應的標簽let res2=await tabsTable.where({openId:dbCmd.eq(openId),tabsName:tabsSelect}).remove()return {code:10000,msg:'更新成功'}},
}
2.4,修改標簽

先畫好頁面:

2-4.png

前端的接口調用:

      //更新標簽名async updateTabs(){let num=Number(this.newTabsNum)let params={token:this.token,oldTabsName:this.updatetabsSelect,newTabsName:this.newTabsName,newTabsNum:num}if(this.updatetabsSelect||!this.newTabsName || typeof num != 'number'){uni.showToast({title: "請輸入合法值",duration: 1500});}const tabs = uniCloud.importObject('tab') // 導入云對象const res = await tabs.updateTabs(params)this.updatetabsSelect=this.newTabsName=this.newTabsNum=''this.getTabs()uni.showToast({title: res.msg,duration: 1500});},

后端對應的接口,當然這個updateTabs方法和前文兩個接口一樣,我為了統一管理,放在同一個云對象里面了,這里為了減少篇幅,只復制了該方法出來.

  //更新標簽名async updateTabs(param){const {token,oldTabsName,newTabsName,newTabsNum}=paramlet result=JSON.parse(decrypt(token))const openId=result.openidlet res=await tabsTable.where({openId:dbCmd.eq(openId)}).get()let res2=res.data.filter(item=>{return item.tabsName==newTabsName})if(res2.length>0&&newTabsName!=oldTabsName){return {code:10001,msg:'該標簽名已存在'}}else{//更新標簽對應的文本為新標簽//第一步:先找到該用戶該標簽的所有數據let resTabnotes = await notesTable.where({openId:dbCmd.eq(openId),tabsSelect:oldTabsName}).update({tabsSelect:newTabsName})//更新-標簽let resTabs = await tabsTable.where({openId:dbCmd.eq(openId),tabsName:oldTabsName}).update({tabsName:newTabsName,tabsNum:newTabsNum})return {code:10000,msg:'更新成功'}}}
2.5,查詢標簽

前端的接口調用:

//獲取所有的標簽
async getTabs(){const tabs = uniCloud.importObject('tab') // 導入云對象const res = await tabs.getTabs({token:this.token})this.tabsList=res.datathis.columns[0]=res.data.map(item=>item.tabsName)
},

后端的接口調用:

  async getTabs(param){const {token}=paramlet result=JSON.parse(decrypt(token))let openId=result.openid//需要排序let res=await tabsTable.where({openId:dbCmd.eq(openId)}).orderBy('tabsNum','asc').get()let result2=res.data.map(item=>{return {tabsName:item.tabsName,tabsNum:item.tabsNum}})return {code:10000,data:result2}},

其他的業務開發大同小異,就不多說啦.其他功能可以掃描我文章開頭的二維碼,體驗一下,這個小程序是我自己將一直使用的,這里就當打個小廣告吧,也會持續維護迭代.有啥優化意見大家也可以提哈.

三,我的小程序體驗

我對應這個教程的小程序,可以看下圖,掃碼體驗:

01.jpg

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163652.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163652.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163652.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UltraCompare 23 for Mac文件對比工具

UltraCompare是一款功能強大的文件比較和合并工具&#xff0c; 以下是它的特色介紹&#xff1a; 多種文件格式支持&#xff1a;UltraCompare支持比較和合并多種文件格式&#xff0c;包括文本文件、二進制文件、office文檔、PDF文件等。 文件差異高亮顯示&#xff1a;UltraComp…

內測分發平臺的合作生態和生態效應如何

大家好&#xff0c;我是咕嚕-凱撒&#xff0c;隨著移動互聯網和智能設備的快速發展&#xff0c;越來越多的開發者和企業開始關注產品的質量和體驗。而內測分發平臺則成為了一種重要的工具&#xff0c;能夠幫助他們更好地測試、優化和推廣產品。在此過程中&#xff0c;內測分發平…

特殊企業信息輕松查詢:特殊企業基本信息查詢API的實用性探討

引言 在當今數字化時代&#xff0c;企業管理和決策往往取決于有效獲取和分析關鍵信息。對于特殊企業&#xff0c;如香港公司、社會組織、律所、事業單位、基金會和新機構&#xff0c;獲取準確、及時的基本信息至關重要。在這個背景下&#xff0c;特殊企業基本信息查詢API正逐漸…

〔004〕虛幻 UE5 像素流部署

? 目錄 ? 啟用像素流插件? 打包項目? 下載環境包? 手動下載? 安裝信令服務器環境? 啟動信令服務器? 設置啟動參數? 啟動程序? 網頁運行? 開啟觸控界面? 啟用像素流插件 打開虛幻啟動程序,選擇 編輯 后點擊 插件在插件列表中搜索 pixel streaming 關鍵字,勾選后重…

springcloud宿舍管理系統源碼

開發技術&#xff1a; jdk1.8&#xff0c;mysql5.7&#xff0c;idea&#xff0c;vscode springcloud springboot mybatis vue elementui 功能介紹&#xff1a; 用戶端&#xff1a; 登錄注冊 首頁展示輪播&#xff0c;公告&#xff0c;報修&#xff0c;晚歸登記&#xff0…

提升抖音小店服務分:優化策略與實操指南

抖音小店服務分是抖音平臺為評估和提升小店服務質量而設立的一項指標。它通過對小店在訂單管理、售后服務、物流管理等多個方面的表現進行評估和計算&#xff0c;為小店提供一個可衡量的服務質量指標。提高抖音小店服務分數對于增加用戶信任度、提升銷售額和增加曝光度都非常重…

第十七章 Java鏈接數據庫

目錄 1.登錄MySQL 2.創建庫和表 3.使用Java命令查詢數據庫操作 4.右擊——點擊“Build Path”——選擇第四個——找到包的位置——導入成功 一、創建java項目 1.注冊驅動 2.獲取鏈接 3.獲取statment對象 4.執行sql語句返回結果集 5.遍歷結果集 6.關閉連接釋放資源 封裝…

opencv-python比較圖像差異性方法

OpenCV-Python提供了幾種比較兩幅圖像差異的函數&#xff0c;主要有以下幾種&#xff1a; 1.cv2.absdiff()&#xff1a;計算兩幅圖像的差異&#xff0c;并返回差異圖像。使用該函數時&#xff0c;需要先將兩幅圖像轉換為相同的大小和類型。 diff cv2.absdiff(image1, image2…

Linux:設置Ubuntu的root用戶密碼

執行以下命令&#xff1a; 給root用戶設置密碼 sudo passwd 輸入兩次密碼 切換root su root 退出root用戶 exit

windows根據已有的安卓簽名文件獲取MD5簽名

windows根據已有的安卓簽名文件獲取MD5簽名 0 現狀 uniapp 本機號碼一鍵登錄需要MD5的&#xff0c;現有的簽名文件但是只有SHA1和SHA256 查看SHA1和SHA256 keytool -list -v -keystore [你的.keystore文件]1 前提 已有生成簽名文件的環境 搭建Openssl環境&#xff0c;設置…

0基礎能不能轉行做網絡安全?網絡安全人才發展路線

最近有同學在后臺留言&#xff0c;0基礎怎么學網絡安全&#xff1f;0基礎可以轉行做網絡安全嗎&#xff1f;以前也碰到過類似的問題&#xff0c;想了想&#xff0c;今天簡單寫一下。 我的回答是先了解&#xff0c;再入行。 具體怎么做呢&#xff1f; 首先&#xff0c;你要確…

idea 2023 安裝配置 Gradle8.4

官網&#xff1a;https://gradle.org 下載 Gradle8.4 https://gradle.org/releases/ 解壓到本地&#xff0c;到 gradle-8.4\init.d 目錄下新建文件&#xff1a;init.gradle 這里有個坑&#xff0c;編譯報http協議安全的問題&#xff0c;解決辦法&#xff0c;加入&#xff1…

Android7.1 高通平臺 修改系統默認語言

客戶需求&#xff1a;修改系統默認語言為英文&#xff08;美國&#xff09; 源碼位置&#xff1a;/build/tools/buildinfo.sh 只需修改 ro.product.locale的值即可&#xff0c;如下圖&#xff1a;

【Java】定時器的簡單應用

在寫代碼的過程中&#xff0c;如果我們遇到了隔一段時間就要進行一項任務時&#xff0c;采用定時器會提高我們的效率。下面對定時器的使用進行簡單說明 1、應用說明 首先我們要創建一個Timer類 Timer timer new Timer(); 然后在timer中調用schedule()方法添加任務 timer.…

redis運維(十三) hash哈希

一 哈希 ① 定義 hash&#xff1a; 散列說明&#xff1a;key對應是值是鍵值對[python中的字典],其中鍵在redis中叫field.形如&#xff1a;value[{field1,value1},...{fieldN,valueN}],值本身又是一種鍵值對結構 ② 優點和缺點 wzj_height 180wzj_age 18等價 -->…

Confluence Server Webwork 預身份驗證 OGNL 注入 (CVE-2021-26084)

漏洞描述 Confluence 是由澳大利亞軟件公司 Atlassian 開發的基于 Web 的企業 wiki。 存在一個 OGNL 注入漏洞&#xff0c;允許未經身份驗證的攻擊者在 Confluence Server 或 Data Center 實例上執行任意代碼。 漏洞環境及利用 搭建docker環境 Confluence搭建見前文 Atlas…

高效聚合 | AIRIOT智慧虛擬電廠管理解決方案

傳統的電力供應模式主要依靠大型發電廠和電網進行能源傳輸和分配&#xff0c;但這種模式會導致能源浪費、環境污染等問題&#xff0c;往往存在如下的運維問題和管理痛點&#xff1a; 資源整合能力差&#xff1a;傳統電力供應模式無法集成和整合分散的電力資源&#xff0c;包括…

深度學習動物識別 - 卷積神經網絡 機器視覺 圖像識別 計算機競賽

文章目錄 0 前言1 背景2 算法原理2.1 動物識別方法概況2.2 常用的網絡模型2.2.1 B-CNN2.2.2 SSD 3 SSD動物目標檢測流程4 實現效果5 部分相關代碼5.1 數據預處理5.2 構建卷積神經網絡5.3 tensorflow計算圖可視化5.4 網絡模型訓練5.5 對貓狗圖像進行2分類 6 最后 0 前言 &#…

課堂巡課如何提升教學質量?簡單才是硬道理

隨著教育技術的不斷發展&#xff0c;在線巡課系統逐漸成為學校管理和教育質量提升的重要工具。在線巡課系統通過數字化手段&#xff0c;為學校提供了更加高效、精準的巡課管理方式&#xff0c;有力地支持了教育教學的改進和優化。 客戶案例 小學巡課項目 山東某小學引入了泛地…

視頻號小店商家,怎么選品?實操經驗分享!

我是電商珠珠 視頻號團隊在22年7月開始發展自己的電商平臺-視頻號小店&#xff0c;截止到目前為止&#xff0c;也已經發展了一年的時間了。 現在的視頻號小店就相當于當初的抖音小店&#xff0c;其風口正盛&#xff0c;平臺也在大力扶持商家&#xff0c;給予商家更多的紅利。…