更新:
最终问题解决了,起初翻阅文档看到云开发数据库配置中的{openid}变量,感觉十分便利,后尝试用云函数调用数据库时出现此问题,问题在于对说明文档的谬读:
安全规则是用来约束前端小程序调用数据库的,{openid}变量需搭配相关安全规则使用方有效,如:
// 自定义安全规则
{
"read": "doc.publisher == auth.openid"
}
// 小程序端数据库逻辑
db.collection('test').where({
publisher: '{openid}'
}).get()
而对于云控制台和服务端(包括云函数)而言,始终具有所有数据的读写权限,安全规则的配置并不起作用,因此应该也无法使用{openid}。
以上是目前本人针对该问题的个人理解。
--------------------------------------------------------------------------------------------------------------
原文:
云函数调用数据库使用{openid}解析失效,小程序端调用数据库使用{openid}变量表现正常。
相关逻辑:
预期表现:
这些文档写得跟屎一样,真是无语
js语法错误,请学好js先。
db.collection('test').where({
publisher: '{openid}'
}).get()
let openid = 'oNhQX0SsRocJU97bbDlG9LqjSidM'
db.collection('test').where({
publisher: openid
}).get()
云函数获取openid 的方法是Cloud.getWXContext().OPENID,不能直接用{openid}的把
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/utils/Cloud.getWXContext.html#%E8%BF%94%E5%9B%9E%E5%80%BC