vue-server,根据图书isbn码,获取图书信息,并保存到mysql数据库

    xiaoxiao2022-07-13  150

    vue-server,保存图书的代码 server/controllers/addbook.js const https = require('https') const {mysql} = require('../qcloud') // 新增图书:获取豆瓣信息,入库 // https://developers.douban.com/wiki/?title=book_v2#get_isbn_book // https://api.douban.com/v2/book/isbn/9787536692930 module.exports = async(ctx) => { const {isbn, openid} = ctx.request.body if(isbn && openid) { // 查询是否已经有这本书了 const findRes = await mysql('books').select().where('isbn',isbn) if(findRes.length){ // 已经存在数据,直接返回 ctx.state = { code:-1, data:{ msg:'这本书已经存在了' } } return } let url = 'https://api.douban.com/v2/book/isbn/'+isbn const bookinfo = awat getJSON(url) const rate = bookinfo.rating.avarage const {title,image,alt,publisher,summary,price} = bookinfo const tags = res.tags.map(v=>{ return '${v.title} ${v.count}' }).join(',') // tag:科幻 100, 小说300 const auther = bookinfo.auther.join(',') try{ // 插入数据,异步过程通过await改成同步的过程 await mysql('books').insert({ isbn,openid,rate,title,image,alt,publisher,summary,price,tags,author }) ctx.state.data = { title, msg:'添加成功:success' } } catch(){ ctx.state = { code:-1, data:{ msg:'新增失败:'+ e.sqlMessage } } } } } function getJSON(url) { return new Promise((resolve, reject){ https.get(url, res=>{ let urlData = '' res.on('data', data=>{ urlData += data }) res.on('end', data=>{ const bookinfo = JSON.parse(urlData) if(bookinfo.title){ resolve(bookinfo) }else { reject(bookinfo) } }) }) }) }

     

    最新回复(0)