解决方式: 在云函数中 将 const table = db.cloud.collection('works_details'); 改为了 const db = cloud.database(); 在云函数入口中,在获取table,就可以了。也不知道是什么原因导致的
云函数 lookup 两表连接 数据库连接异常?场景:在使用云函数lookup 进行两表连接的时候,提示数据库异常 异常信息:collection.aggregate:fail -502001 database request fail. [FailedOperation] Failed operation. Please check your request, but if the problem persists, contact us 云函数:getWorksDetailsList // 云函数入口文件 /** * 获取所有用户提交的参赛作品列表 * 区别于:getWorksDetails,当前函数查询出来的结果,会携带参赛人的信息,且是所有人的参赛作品 */ const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境 const table = cloud.database().collection("works_details"); // 云函数入口函数 exports.main = async (event, context) => { return table .aggregate() .lookup({ form: 'contestant_info', localField: 'openId', foreignField: 'openId', as: 'contestant' }) .end() .then(res => { console.log(res); return res; }) .catch(err => { console.log(err); return err; }) } 云函数调用失败,造成了上述的问题。 失败的解决过程: 1.初次使用lookup,所以,按照api中的示例做了一下,没有问题。示例地址:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.lookup.html#示例 2.数据库云控制台解决脚本: db.collection('works_details').aggregate().lookup({ from: 'contestant_info', localField: 'openId', foreignField: 'openId', as:'worksList' }) .end() .then(res=>{ console.log(res); }) .catch(err=>{ console.log(err); }) [图片] 查询结果正确。 3.网上搜索解决方法: https://blog.csdn.net/wxjcode/article/details/125560127 怎么解决的没看懂。为什么添加一个索引?这个索引是根据什么来的? 既然这样,我查看了一下索引:都是 集合表名+openid_index_ 和_id_ 这两个索引。 请帮忙解决一下,这个问题。非常感谢
2023-04-21