- 当前 Bug 的表现(可附上截图)
1.在一个权限为 所有用户可读,仅创建者及管理员可写
的集合中,尝试通过doc.update去更新记录,发现只能更新自己的记录,定位原因是自己并非管理员。
问题:如何设置自己为管理员。
2.在doc.update中,三个回调函数中,我设置的打印均未执行。
无论是成功更新了自己的记录或者是未成功更新他人的记录。
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
updataFixedData(srcData) { const goodsCollection = getApp().globalData.goodsCollection; const _this = this ; var id = srcData._id; delete srcData._id; delete srcData._openid; var doc = goodsCollection.doc(id); console.log( "修复数据" , srcData, doc); var res = doc.update({ data: srcData, success: function (res) { console( "修复数据成功" , res); }, fail: function (res) { console( "修复数据失败" , res); }, complete: function (res) { console( "修复数据完成" , res); } }); console.log(res); }, |
通过云函数可以实现的,云主函数里要使用return去调用db.collection('XXX')....方法
Server API 不再接受回调(
success
,fail
,complete
),统一返回Promise,
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/database/index.html
卧槽!原来如此!
第一个问题,目前没有这种权限支持,可以通过服务端SDK在云函数里访问,服务端都是以管理员的身份进行的。第二个问题,有其它报错信息吗
没有报错信息,代码中的三个回调函数中的打印都没有被执行
要更新的数据都是通过客户端SDK添加的吗
是的,doc.update接口,数据是自己填充的。
发现打印函数写错了,见谅。
用了云函数来执行update,期待有管理员权限可update全部数据库,但是与预期不符。
客户端调用云函数会传进event,当中有自己的openid,此时运行的云函数主体有update数据库的操作,更新不成功时符合预期的吗(无论是否本openid均更新不成功)。
而且云数据库的doc.update这种怎么写在云函数中写promise,还望指教。
管理员权限需要使用server sdk才行;云函数的是管理员权限,不应该会再有openid相关的权限限制;云函数中的promise写法文档里有哈,遇到问题的话贴一下
或者在云客户端提供一个方法,可以批量处理数据库数据。