l***@sina.com
l***@sina.com
  • 发布:2022-12-15 15:48
  • 更新:2023-11-27 20:52
  • 阅读:452

【报Bug】修改了云端数据库信息后不生效

分类:uniCloud

产品分类: uniCloud/App

操作步骤:

情况一、管理台里将表名为order的修改为db-order,运行程序后报错:未找到集合[db-order]对应的schema。尝试下载所有DB Schema到本地运行,发现下载所有的表里也没有db-order的表,也没有修改名称前的order表。

情况二、修改了表里的foreignKey指向,运行程序后一直报错:未找到主表与副表之间的关联关系,尝试下载所有DB Schema到本地运行,本地DB Schema里的foreignKey与管理台里的一直,但还是提示未找到主表与副表之间的关联关系

预期结果:

修改数据库表名称后,程序里也相应修改后,应该正常运行
修改数据库里的foreignKey,程序里使用联表查询应该正常运行

实际结果:

修改数据库表名后,前端程序也修改相应的表名,但报错:未找到集合[db-order]对应的schema,下载有DB Schema到本地后,发现无法下载到db-order的表。
修改数据库里的foreignKey,程序里使用联表查询报错:未找到主表与副表之间的关联关系

bug描述:

这两天发个很麻烦的问题,就是修改了uniCloud数据库,有些信息会无法生效,第一个情况,修改了foreignKey,前端运行时一直提示没有关联表,但管理台里看到明明是已经关联,运行程序就是要报没有关联表。第二个情况,先是一个order表,修改成了db-order之后,管理台刷新,重新登陆都显示的是db-order表名称,但是前端运行时,还是报未找到集合[db-order]对应的schema。然后尝试下载到本地运行,发现本地database里也无法下载到[db-order]的表,改名之前的order表也没有。可是管理台里明明是有的。

2022-12-15 15:48 负责人:DCloud_云服务_moyang 分享
已邀请:
8***@qq.com

8***@qq.com

我也一样的bug, 我猜需要把表格删了重新上传才行,好蹉啊

8***@qq.com

8***@qq.com

修改了foreignKey,前端运行时一直提示没有关联表,但管理台里看到明明是已经关联,运行程序就是要报没有关联表。

我把表格都删了,重新做还是一样!准备试试重装hbuilder

8***@qq.com

8***@qq.com

或许云函数是依赖的jql包太老了

风云21

风云21

解决了吗

8***@qq.com

8***@qq.com

还没解决,现在正在重装Hbuilder

8***@qq.com

8***@qq.com

重装也没用,招数都试完了,还是未找到主表与副表之间的关联关系

8***@qq.com

8***@qq.com

foreignKey不生效。

  1. 主表:fishplacefavor收藏表

"fishplaceid":{
"bsonType": "string",
"foreignKey": "fishplace._id"
},

2.次表:fishplace
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"name": {
"bsonType": "string",
"title": "钓点名称",
"trim": "both",
"minLength": 1,
"maxLength": 50
},
"position": {
"bsonType": "string",
"title": "位置说明"
},
}
}

3.代码:
console.log("开始联表查询");
let favor = await dbJQL.collection('fishplacefavor')
.where('useropenid=="'+params.useropenid+'" && type in ["AA","BB"]')
.getTemp();
let dbRes=await dbJQL.collection(favor,'fishplace')
.orderBy('createTime desc')
.skip((params.page - 1) * params.size)
.limit(params.size)
.get();

  1. 云函数:
    {
    "name": "fishplacefavor",
    "version": "2.0.0",
    "main": "index.js",
    "dependencies": {
    "wx-common": "file:../common/wx-common"
    },
    "extensions": {
    "uni-cloud-jql": {}
    }
    }

  2. 报错:
    console.log("开始联表查询");
    let favor = await dbJQL.collection('fishplacefavor')
    .where('useropenid=="'+params.useropenid+'" && type in ["aa","bb","cc"]')

                .getTemp();  
    let dbRes=await dbJQL.collection(favor,'fishplace')  
                .orderBy('createTime desc')  
                .skip((params.page - 1) * params.size)  
                .limit(params.size)  
                .get();  
  3. 已经做过的措施:重装hbuilder, 删除数据库表重新做,本地云函数和云端云函数尝试,删除重新添加云函数,都没解决

8***@qq.com

8***@qq.com

其他人有遇到吗,怎么解决的?卡在这了

要回复问题请先登录注册