成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

小程序云開發(fā)初探

spademan / 1288人閱讀

摘要:云開發(fā)官方文檔一新建云開發(fā)項(xiàng)目新建項(xiàng)目將微信開發(fā)助手更新之后,選擇云開發(fā)模板。存放的是和普通開發(fā)相同的業(yè)務(wù)代碼和資源,中則存放了可以上傳至云端的代碼,在云開發(fā)中被稱為云函數(shù)。前提是該小程序在中設(shè)置,表示允許記錄用戶信息。

云開發(fā)是微信平臺(tái)新開放的功能,為開發(fā)者提供集成了服務(wù)器,數(shù)據(jù)庫和資源存儲(chǔ)的云服務(wù)。本文將基于官方文檔,以一個(gè)小例子來作為探索云開發(fā)的相關(guān)功能。

云開發(fā)官方文檔

一、新建云開發(fā)項(xiàng)目 新建項(xiàng)目

將微信開發(fā)助手更新之后,選擇云開發(fā)模板。

項(xiàng)目目錄

項(xiàng)目目錄分為了2大塊內(nèi)容:cloudfunctions(云函數(shù))和miniprogram。miniprogram存放的是和普通開發(fā)相同的業(yè)務(wù)代碼和資源,cloudfunctions中則存放了可以上傳至云端的代碼,在云開發(fā)中被稱為云函數(shù)。
云開發(fā)模板建立之后,會(huì)帶有一些相關(guān)例子可以熟悉api。

二、控制臺(tái)

微信開發(fā)者工具更新之后,在工具欄上會(huì)有一個(gè)控制臺(tái)入口,點(diǎn)擊可出現(xiàn)以下面板,可查看相關(guān)數(shù)據(jù)情況。

概覽

概覽界面如上圖所示,展示了該 云開發(fā)項(xiàng)目下使用云資源的統(tǒng)計(jì)數(shù)據(jù)。

用戶管理

凡是訪問過云項(xiàng)目的用戶,都會(huì)在用戶管理下留有訪問記錄。前提是該小程序在app.js中設(shè)置traceUser:true,表示允許記錄用戶信息。

    wx.cloud.init({
        env:"......",
        traceUser: true,
    })
數(shù)據(jù)庫

數(shù)據(jù)庫是控制臺(tái)中最常用的功能之一,在該界面下,可以快速建立數(shù)據(jù)集合,可以理解為數(shù)據(jù)表??稍诳刂婆_(tái)中建立新的集合,添加記錄有三種方式:控制臺(tái)手動(dòng)添加、文件導(dǎo)入以及調(diào)用api。調(diào)用api會(huì)在每條記錄中自動(dòng)插入用戶_openid。

存儲(chǔ)管理

存儲(chǔ)管理可保存小程序端上傳的文件,可通過調(diào)用api進(jìn)行上傳,上傳名稱和路徑需要自己定義。

云函數(shù)

云函數(shù)對(duì)cloudfunctions中上傳的函數(shù)進(jìn)行管理,可進(jìn)行調(diào)試,查看調(diào)用日志等信息。

云函數(shù)添加方式有2種,可視化添加與IDE添加,可視化添加的云函數(shù)直接上傳至了云端,IDE中添加需要上傳部署才可以調(diào)用。如果要?jiǎng)h除云函數(shù),在控制臺(tái)刪除之后,IDE中同步云函數(shù)列表即可。

統(tǒng)計(jì)分析

統(tǒng)計(jì)分析對(duì)云服務(wù)的調(diào)用情況有針對(duì)得給出了數(shù)據(jù)。

三、環(huán)境配置

api會(huì)在每條記錄中自動(dòng)插入用戶_openid。

項(xiàng)目初始化需要在app.js中進(jìn)行配置,env中填寫的就是自主配置的環(huán)境ID。

    wx.cloud.init({
        env:"mina-cloud-test001"
    })
四、實(shí)際應(yīng)用

本例以上傳書籍信息為實(shí)際應(yīng)用,實(shí)現(xiàn)基本的書籍信息增刪改查功能,以及圖片的上傳刪除。

讀取數(shù)據(jù)庫數(shù)據(jù)

先通過調(diào)用wx.cloud.database();獲取數(shù)據(jù)庫所有集合,然后通過查詢具體集合的方式獲取數(shù)據(jù)。

    const db = wx.cloud.database();
    const _ = db.command;
    
    db.collection("bookList").get().then(res => {
        console.log("get", res)
        self.setData({
            bookList: res.data
        });
    })
增加數(shù)據(jù)
    const db = wx.cloud.database();
    const _ = db.command;
    
    db.collection("bookList").add({
        data: {
          bookMes: self.data.bookMes
        }
    }).then(res => {
        console.log(res)         
    })
刪除數(shù)據(jù)
    db.collection("bookList").doc(id).remove().then(res => {
        console.log(res)
        wx.showToast({
            title: "刪除成功!",
        })
        self.getBook();
        }).catch(err => {
            console.log("err", res)
        })
    })
增加數(shù)據(jù)
    const db = wx.cloud.database();
    const _ = db.command;
    
    db.collection("bookList").doc(id).remove().then(res => {
        console.log(res)
        }).catch(err => {
            console.log("err", res)
        })
    })
改變數(shù)據(jù)
    const db = wx.cloud.database();
    const _ = db.command

    db.collection("bookList").doc(self.data.currentId).update({
        data: {
          bookMes:self.data.bookMes
        }
    }).then(res=>{
        console.log("update",res)
        self.getBook();
    }).catch(console.error)
查詢數(shù)據(jù)&調(diào)用云函數(shù)

查詢數(shù)據(jù)采用云函數(shù)為例

先在云函數(shù)中定義查詢函數(shù),每個(gè)需要調(diào)用云開發(fā)api的云函數(shù)都必須使用wx-server-sdk,當(dāng)新創(chuàng)建一個(gè)云函數(shù)時(shí),項(xiàng)目會(huì)提示是否需要使用依賴,選擇是則會(huì)自動(dòng)安裝wx-server-sdk。
函數(shù)中的event參數(shù)代表由小程序端傳遞過來的參數(shù),除此之外默認(rèn)包含了userInfo,可用來做用戶鑒權(quán)操作。

    //云函數(shù)入口文件
    const cloud = require("wx-server-sdk")
    cloud.init()
    const db = cloud.database()
    const _ = db.command
    
    //云函數(shù)函數(shù)入口
    exports.main = async (event, context) => {
        return db.collection("bookList").where({
            "bookMes.name": _.eq(event.bookMes.name),
            "bookMes.chooseTags":_.in(event.bookMes.chooseTags)
    }).get({
        success:function(res){
          return res
        }
      })
    }

小程序端引用云函數(shù),name為云函數(shù)文件夾的名稱,data中存放的是傳遞給云函數(shù)的參數(shù),云函數(shù)通過event獲取:

    wx.cloud.callFunction({
        name: "searchBook",
        // 傳給云函數(shù)的參數(shù)
        data: {
            bookMes: self.data.bookMes
        }
    }).then(res => {
        console.log("search",res.result.data)
        self.setData({
            bookList:res.result.data
        })
    })

本文中的api使用方式僅為示例,實(shí)際上服務(wù)端的api比小程序端的api豐富,實(shí)現(xiàn)功能更多。建議設(shè)計(jì)文件存儲(chǔ)、數(shù)據(jù)庫增刪改查的操作都在云函數(shù)中進(jìn)行。

上傳圖片

上傳圖片需要先調(diào)用wx.chooseImage返回的filePath參數(shù),然后自主定義cloudPath,即上傳至云端的地址。

    choose() {
        let self = this
        wx.chooseImage({
            count: 1, // 默認(rèn)9
            sizeType: ["original", "compressed"], // 可以指定是原圖還是壓縮圖,默認(rèn)二者都有
            sourceType: ["album", "camera"], // 可以指定來源是相冊(cè)還是相機(jī),默認(rèn)二者都有
            success: function (res) {
            // console.log(res.tempFilePaths[0])
            // 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標(biāo)簽的src屬性顯示圖片
                self.setData({
                    bookPic: res.tempFilePaths[0]
                })
            }
        })
    },
    upload(){
        let self = this
        const filePath = self.data.bookPic
        let myDate = new Date();
        let time = "" + myDate.getFullYear() + (myDate.getMonth() + 1) + myDate.getDate() + myDate.getHours() + myDate.getMinutes() + myDate.getSeconds();
        const cloudPath = "book-image" + time + filePath.match(/.[^.]+?$/)[0];
    
        return wx.cloud.uploadFile({
            cloudPath,
            filePath,
        }).then(res => {
            console.log("upload", res)
            let bookMes = self.data.bookMes;
            bookMes.bookPic = res.fileID;
            return self.setData({
                bookMes
            });
        }).catch(err => {
            console.log("error",err)
        })
    }
刪除圖片

刪除圖片或其他文件需要具體的fileId,可通過查詢得到,通過該fileID進(jìn)行刪除。

    wx.cloud.deleteFile({
        fileList: [fileId],
        success: res => {
            console.log("delete", res.fileList)
        },
        fail: err => {
            console.log("deleteE", err)
        }
    })
五、發(fā)現(xiàn)存在的問題

在實(shí)際寫例子的過程中,也發(fā)現(xiàn)了一些問題,因?yàn)樵崎_發(fā)的功能開放不久,功能并不是很完善,總結(jié)了一些發(fā)現(xiàn)的小問題:

數(shù)據(jù)庫暫不支持模糊查詢

數(shù)據(jù)庫集合之間無法關(guān)聯(lián)

上傳圖片如果cloudPath和之前的圖片一致的話,返回結(jié)果雖然現(xiàn)實(shí)成功,但實(shí)際替換成了之前的舊圖

globalData定義方法發(fā)生改變,無法與onLaunch同級(jí)進(jìn)行定義。

六、結(jié)語

關(guān)于云開發(fā),官方文檔給出的說明比較詳細(xì),仔細(xì)閱讀文檔可以較快速得實(shí)現(xiàn)上手應(yīng)用。但由于目前其功能的局限性,較為復(fù)雜的公司業(yè)務(wù)不適合采用該模式進(jìn)行開發(fā),適合個(gè)人小型業(yè)務(wù)采用。
上文中如有不盡不實(shí)之處,歡迎指出修改,謝謝!ヾ(=?ω?=)o

廣而告之

本文發(fā)布于薄荷前端周刊,歡迎Watch & Star ★,轉(zhuǎn)載請(qǐng)注明出處。

歡迎討論,點(diǎn)個(gè)贊再走吧 ????? ~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98629.html

相關(guān)文章

  • 開發(fā)初探 —— 更簡(jiǎn)便的程序開發(fā)模式

    摘要:年加入騰訊云云開發(fā)團(tuán)隊(duì)?;冢品?wù)商發(fā)展出這類更高級(jí)的開發(fā)服務(wù)。小程序云開發(fā)說了這么多無服務(wù)開發(fā)的概念優(yōu)點(diǎn),在小程序無服務(wù)開發(fā)這一塊,騰訊云有什么樣的作品呢。這就是今天要重點(diǎn)介紹的,小程序云開發(fā),這就是騰訊云與微信聯(lián)合研發(fā)后,交出的答卷。 李成熙,騰訊云高級(jí)工程師。2014年度畢業(yè)加入騰訊AlloyTeam,先后負(fù)責(zé)過QQ群、花樣直播、騰訊文檔等項(xiàng)目。2018年加入騰訊云云開發(fā)團(tuán)隊(duì)。...

    iKcamp 評(píng)論0 收藏0
  • 程序測(cè)試方案初探

    摘要:前言年月號(hào)微信小程序正式上線,小程序不需要安裝就能使用,依托微信強(qiáng)大的生態(tài)環(huán)境,能做到很多所不能做的事情。當(dāng)然更希望的是小程序官方能給出相應(yīng)的單元測(cè)試方案吧。 前言 2017年1月9號(hào)微信小程序正式上線,小程序不需要安裝就能使用,依托微信強(qiáng)大的生態(tài)環(huán)境,能做到很多H5所不能做的事情。從微信小程序發(fā)布這段時(shí)間,陸陸續(xù)續(xù)開發(fā)了不少小程序相關(guān)的項(xiàng)目,總結(jié)了一些通用性的組件,但是對(duì)于小程序如何...

    church 評(píng)論0 收藏0
  • 通過案例學(xué)功能 自定義監(jiān)控功能初探

    摘要:通過這個(gè)案例給大家講講監(jiān)控寶自定義監(jiān)控,這是我們產(chǎn)品中藏著的一把瑞士軍刀,但由于這個(gè)功能是免費(fèi)的,所以很多用戶反而不太了解。創(chuàng)建一個(gè)自定義監(jiān)控。 IT系統(tǒng)千差萬別,即便是通用的Java、PHP也會(huì)由于版本的差異,配置和接口存在大同而小異,但往往就是這些小差別,會(huì)對(duì)系統(tǒng)的穩(wěn)定性和性能產(chǎn)生大影響。市面上的IT監(jiān)控產(chǎn)品都只能對(duì)標(biāo)準(zhǔn)應(yīng)用的流行版本進(jìn)行準(zhǔn)確監(jiān)控,對(duì)于分支版本或企業(yè)自己開發(fā)的應(yīng)用系...

    hizengzeng 評(píng)論0 收藏0
  • 啥?四分錢就能學(xué)會(huì)開發(fā)電商和游戲程序?!

    摘要:微信小程序自年發(fā)布至今,以其速度快體驗(yàn)棒無適配等優(yōu)點(diǎn),不斷實(shí)現(xiàn)著使應(yīng)用觸手可及的夢(mèng)想,為用戶生活的各個(gè)方面帶來了便利。 微信小程序自2017年發(fā)布至今,以其 速度快、體驗(yàn)棒、無適配等優(yōu)點(diǎn),不斷實(shí)現(xiàn)著使應(yīng)用觸手可及的夢(mèng)想,為用戶生活的各個(gè)方面帶來了便利。 showImg(https://segmentfault.com/img/remote/1460000019836007?w=1080...

    buildupchao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<