微信小程序踩坑集录:云数据库与云函数

Posted lwx2233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序踩坑集录:云数据库与云函数相关的知识,希望对你有一定的参考价值。

看到有人催我更新《零基础手把手教你制作一个微信小程序云开发-实验室仪器管理系统》,很抱歉因为最近实习比较忙,同样也是在做微信小程序(OA办公平台),所以这个专栏可能会停更一段时间,这段时间也不会停止更新,我会将我写微信小程序过程中踩中的这些坑记录下来,写成文章发送。

今天讲讲微信的云数据库和云函数

云数据库没什么好说的,就是单纯的是微信小程序IDE中集成的功能,附带了一个链接云端的数据库,非常的方便。

云函数是独立于整个微信小程序项目的函数,他可以对云数据库进行一系列的操作,还有其他的功能不过这不是今天的重点。

先说说怎么部署云函数吧:

(一)新建一个云函数

我这里装了Node.js,因为装了一个UI库(LIn-ui),官网在此:https://doc.mini.talelin.com/

(二)安装wx-server-sdk

在终端输入这个

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

终端就是下面的控制台隔壁,如图:

(三) 上传并部署

写完云函数只需要右击该文件夹,然后点击上传并部署(全部文件)就可以了。


好进入正题,我最近写的OA办公系统中有一个功能,他需要动态的创建集合,所以我创建了一个云函数,代码如下:

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

cloud.init(env: '这里填写你的环境变量id')//env是你的环境变量id,记得写!
const db = cloud.database()             
const _ = db.command                    //这两句很重要,不写的话连不了云数据库的

// 云函数入口函数
exports.main = async (event) => 
  return await db.createCollection(event.anhao)//利用createCollection方法来创建集合

须注意的点

1.const db = cloud.database()相当于微信页面中的const db = wx.cloud.database(),都是连接数据库必备的

2.新建云函数的时候,cloud.init()括号中是空的,记得添加 env:'环境变量ID'

3.入口函数中的return await只能有一个

然后我再微信页面通过wx.cloud.callFunction()来调用与函数,代码如下:

wx.cloud.callFunction(
      // 要调用的云函数名称
      name: 'create',
      // 传递给云函数的参数
      data: 
        anhao:this.data.name//从pages的data中取值
      ,
      success: res => 
      console.log('1 result == '+JSON.stringify(res.result));
      
      ,
      fail: err => 
      console.log('1  err == ' + JSON.stringify(err));
      ,
      complete: () => 
      console.log('1  完成 ');
      
    )

须注意的点

1.anhao就是前面的event.anhao,微信页面就是这么传值到云函数的

OK到这里的时候我已经完成了点击按钮新建一个数据库集合(只要我pages中的data里有name这个值)

然后经过需求分析我又发现,这个按钮需要新建一个集合,同时将页面的记录输入到这个新建的集合中,

于是我用了老办法,代码如下:

db.collection(this.data.name).add(
   data: 
//这里填写你要加入数据库的数据

)

是这样的,然后我将这个往数据库中添加记录的这个add方法并行的写在了下面,天真的我以为js是链式编码,这样的结果就是

这个add方法找不到刚刚创建的那个名叫anhao的数据库集合(因为js是并行运算而不是链式编码)

当时找了很久的解决办法,没找到,所以我根据惯性,将其写进了success: res=>中,这样的结果是

报错了,success中不支持add方法

然后我又开始查csdn,最后没办法了我想到一个:我写两个云函数,一个create,一个add,这样总行了吧,代码如下:

const cloud = require('wx-server-sdk')

cloud.init(env: 'oa-4gpuj8rx82099e89')
const db = cloud.database()

const _ = db.command

// 云函数入口函数
exports.main = async (event, context) => 
  return await db.collection(event.anhao).add(
    data: 
)

然后并排写在按钮中,这样的结果是

成功了!居然按着顺序来了,先创建了一个新的数据库集合,然后往里面添加了一行记录


好的今天的踩坑集录就写到这里,我们下期再见啦!

以上是关于微信小程序踩坑集录:云数据库与云函数的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序踩坑集录:云数据库与云函数

微信小程序踩坑集录:云数据库与云函数

微信小程序踩坑集

微信小程序云开发(13)— “云函数修改(update)/删除(remove)数据”

Taro 微信小程序云开发云函数上传并部署错误的解决办法

微信小程序开发-----云开发