这里写一下这两天踩过的坑,若有大神看此贴,欢迎指点一二,若有写的不周的地方,请谅解
前言:小程序需要在云函数中执行对数据库的新建以及更新操作
我这里用的云函数操作的云数据库,刚开始写的是一个新建的动作,复杂的逻辑劈里啪啦写了一大堆,测试一下并没有报错,但是在我进入云开发去看数据库时傻眼了---并没有刚刚新建的记录。赶紧先把代码挪出来只写一个简简单单的新建函数:
注意一:
云函数开发和普通开发有些区别--普通开发访问数据库这么写:const db = wx.cloud.database()
云函数访问数据库这么写:const db = cloud.database()
注意二:对数据库的操作代码之前要加上 “await” (这里我要吐槽一下官方文档,没有有关于云函数操作数据库的注意事项文档)
嗯,这样才算能够操作的到数据库
注意三:云函数初始化的时候,千万不要图省事什么都不写:
开始的时候,我以为这么写会去访问默认数据库不需要其他操作
那么你可能会和我一样遇到-404011错误
原来云函数在初始化的时候,并不会按照app.js中wx.cloud.init里面配置的信息进行位置访问,而是需要在云函数的初始化方法中声明访问位置
这个报错影响了我一天,这里也需要提醒一下遇到-404011的各位,遇到这样的问题继续看报错信息不要莽莽撞撞的就去查各种资料,比如我的这个报错信息,提示找不到db or table 所以才意识到初始化的时候需要声明一下,之后再上传并部署就可以了
也许您也还会遇到-404011的其他报错信息,报错信息后面如果提示找不到sdk或者其他的也都有可能,在查百度的时候看到这样一篇文章不错,可以借鉴一下https://blog.csdn.net/New_Yao/article/details/84657774
我的电脑上是没有装node的,但是也可以正常使用,我一直使用的都是云端安装依赖,因为我在看官方文档的时候,并没有说电脑一定要安装node,当然,这个还是要看实际情况
我再云函数中发起http请求
got({
hostname:'http://网址',
path:'/plat/user/',
port:'8080',
method:'POST',
headers:{
'Content-Type':'application/json'
},
body:JSON.stringify({
nickname:'ssssssssss'
})
})
返回如下的结果
{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"Invalid URL: https://[http://120.********]:8080"}
这是什么原因呢