云函数

云函数

编写云函数
// 云函数入口文件
const cloud = require('wx-server-sdk')
const TcbRouter = require('tcb-router')
const axios = require('axios')
cloud.init({
  env: 'test-2gero0zpba5fa8d7',
        traceUser: true
})

// 云函数入口函数
exports.main = async (event, context) => {
  const app = new TcbRouter({ event });
  app.router('playlist', async (ctx, next) => {
    let res = await cloud
      .database()
      .collection('playlist')
      .skip(event.start)
      .limit(event.count)
      .orderBy('createTime', 'desc')
      .get()
    ctx.body = res
  })

在这里插入图片描述
上传并部署云函数

插入数据
// 云函数入口文件
const cloud = require('wx-server-sdk')

wx.cloud.init({
  env: 'test-2gero0zpba5fa8d7',
  traceUser: true,
})
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
    let res=await db.collection('todos').add({
      data:{
        description:'插入的数据信息',
        done:false,
        due:new Date(),
        tags:['hello','world'],
        style:{color:'blue'}
      }
    })
    return res
}
获取音乐信息
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
  env: 'test-2gero0zpba5fa8d7',
  traceUser: true,
})
const axios=require('axios')
// 云函数入口函数
exports.main = async (event, context) => {
  let res= await axios.get('http://api.daqitc.net/top/playlist?limit=10&order=new'+event.page+'&order=new')
  return res.data
}
更新一条数据
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: 'test-2gero0zpba5fa8d7',
  traceUser: true,
})
const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  db.collection('todos').doc('79550af26086254511231e47138a276c').update({
    // data 传入需要局部更新的数据
    data: {
      // 表示将 done 字段置为 true
      description:'更改最新的数据',
      done: true
    },
    success: function(res) {
      console.log(res.data)
    }
  })
}
更新多条数据
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: 'test-2gero0zpba5fa8d7',
  traceUser: true,
})
const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  let res=await db.collection('todos').doc('cbddf0af60862ce303bcf9f946bf36c0').set({
    data:{
      description:'全部更新为最新的数据信息',
      due: new Date("2020-04-26"),
      tags: [
        "success",
        "word"
      ],
      style: {
        color: "orange"
      },
      done:true,
      },
      success: function(res) {
        console.log(res.data)
      }
  })
}

云函数路由

每个控件的云函数是有限制的,所以我们应该尽量利用每一个云函数,将业务相关的代码写道一个云函
数中
所以这里的云函数与常规后台开发中的 api 不太一样
1.每个 api 的功能应该尽量单一
2.每个云函数应该尽量处理多的任务,当然这些任务是相关的,比如推荐歌单、热门歌单、音乐搜索

安装
npm install --save tcb-router
云函数中引入
const TcbRouter=require('tcb-router')
修改云函数代码
// 云函数入口文件
const cloud = require('wx-server-sdk')
const TcbRouter = require('tcb-router')
const axios = require('axios')
cloud.init({
  env: 'test-2gero0zpba5fa8d7',
        traceUser: true
})

// 云函数入口函数
exports.main = async (event, context) => {
  const app = new TcbRouter({ event });
  app.router('playlist', async (ctx, next) => {
    let res = await cloud
      .database()
      .collection('playlist')
      .skip(event.start)
      .limit(event.count)
      .orderBy('createTime', 'desc')
      .get()
    ctx.body = res
  })
  app.router('musiclist',async(ctx,next)=>{
    let res=await axios.get(`http://api.daqitc.net/playlist/detail?id=${event.playlistId}`)
    ctx.body=res.data
  })
  app.router('songurl',async (ctx,next)=>{
    let res=await axios.get(`http://api.daqitc.net/song/url?id=${event.musicid}`)
    ctx.body = res.data
  })
  return app.serve()
}
在云函数中使用 wx-server-sdk

云函数中使用 wx-server-sdk 需在对应云函数目录下安装 wx-server-sdk 依赖,在创建云函数时会在云函数目录下默认新建一个 package.json 并提示用户是否立即本地安装依赖。请注意云函数的运行环境是 Node.js,因此在本地安装依赖时务必保证已安装 Node.js,同时 node 和 npm 都在环境变量中。如不本地安装依赖,可以用命令行在该目录下运行:

npm install --save wx-server-sdk@latest

在云函数中调用其他 API 前,同小程序端一样,也需要执行一次初始化方法:

const cloud = require('wx-server-sdk')
// 给定字符串环境 ID:接下来的 API 调用都将请求到环境 some-env-id
cloud.init({
  env: 'some-env-id'
})

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值