對微一個微信掃碼識別圖書的幾個知識及解決辦法!
2022-12-10 08:00:15
歡樂點
前言,近期對微信云開發來了興趣,上手一個微信掃碼識別圖書,并上傳保存到云數據庫中微信掃碼點單,涉及到以下幾個方面的知識:小程序注冊賬號、小程序掃碼API的使用、小程序云開發等
注冊小程序賬號
首先,通過手機號或郵箱注冊一個小程序賬號,拿到AppID,開通云開發權限,需要注意的是每?個?程序/公眾號/?游戲都需要?個email,同?個?機號只能注冊5個,同?個身份證也只能注冊5個
云開發實戰掃碼識別圖書
1、使用小程序API-wx.()方法掃碼圖書背面的條形碼獲得版號ISBN
wx.scanCode({
success: (res)=>{
console.log(res.result) // 圖書的版號ISBN
}
})
復制代碼
2、拿到版號后,新建一個云函數,其實就是微信掃碼點單,通過一個方法把ISBN作為參數再利用這個npm包函數解碼得到圖書的封面和標題title
async function getBookInfo(isbn) {
const url = 'https://search.douban.com/book/subject_search?search_text=' + isbn;
const res = await axios.get(url)
const reg = /window\.__DATA__ = "(.*)"/
if (reg.test(res.data)) {
const bookData = RegExp.$1
const decryptedData = doubanbook(bookData)
console.log(decryptedData);
return decryptedData[0]
}
return res
}
復制代碼
3、把圖書信息保存到云數據庫中,在云函數的main方法里連接云數據庫books,保存圖書的isbn、title、,其中isbn設置為主鍵,這樣就不會重復上傳圖書
// 云函數入口函數
exports.main = async (event, context) => {
// 獲取圖書的ISBN
const {
isbn
} = event
// 云函數數據庫
const db = cloud.database()
const res = await getBookInfo(isbn)
db.collection('books').add({
data: {
isbn,
title: res.title,
cover_url: res.cover_url
}
})
// 獲取數據庫的全部圖書
const booksData = await db.collection('books').get()
return {
booksData: booksData.data,
title: res.title,
cover_url: res.cover_url
}
}
復制代碼
4、最后,在app端調用云函數方法,做下圖片的優化處理和展示即可,非常簡單
// 掃碼識別圖書
btnScan() {
wx.scanCode({
success: res1 => {
// res.result是版號ISBN
wx.cloud.callFunction({
name: 'getbook',
data: {
isbn: res1.result
},
success: async res2 => {
const booksData = res2.result.booksData;
const isbn = res1.result
// 重復上傳則提示
const isRepeat = booksData.every(item => item.isbn !== isbn)
if (!isRepeat) {
wx.showToast({
title: '數據庫中已存在',
icon: "error"
})
}
this.setData({
title: res2.result.title,
cover_url: res2.result.cover_url
})
}
})
}
})
},
復制代碼
完整的代碼,到我的下載掃碼識書
免責聲明:部分文章信息來源于網絡以及網友投稿,本站只負責對文章進行整理、排版、編輯,出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其內容的真實性,如本站文章和轉稿涉及版權等問題,請作者在及時聯系本站,我們會盡快為您處理。
相關文章