卖火柴的咖啡猫
卖火柴的咖啡猫
  • 发布:2023-07-30 10:40
  • 更新:2023-07-31 11:33
  • 阅读:158

【报Bug】schema联表查询,查询结果得不到副表内容

分类:uniCloud

产品分类: uniCloud/App

示例代码:

查询代码 去掉field条件中的goods_id或者_id中任一个,都会报错两个表没有关联,那说明关联没问题
const orders = db.collection('uni-pay-orders').where(user_id==$cloudEnv_uid).field('status,goods_id').getTemp()
const ordergoods = db.collection('opendb-mall-goods').where(userid==$cloudEnv_uid).field('_id,totalPrice,skuList').getTemp()
const res = await db.collection(orders,ordergoods).get()

uni-pay-orders(主表)部分必要信息

"permission": {
"read": true,
"create": true,
"update": false,
"delete": false
},
"user_id": {
"title": "用户ID",
"bsonType": "string",
"description": "用户id,参考uni-id-users表",
"foreignKey": "uni-id-users._id",
"forceDefaultValue":{
"$env":"uid"
}
},
"goods_id":{ //关联opendb-mall-goods表
"title": "订单id",
"bsonType": "string",
"description": "订单id,参考opendb-mall-goods表",
"foreignKey": "opendb-mall-goods._id",
"forceDefaultValue":{
"$env":"opendb-mall-goods._id"
}
},

opendb-mall-goods(副表)部分必要信息

"permission": {
"read": true,
"create": true,
"update": true,
"delete": false,
"count": false // 禁止查询数据条数(admin权限用户不受限),
},
"userid": {
"bsonType": "string",
"description": "用户ID, 参考uni-id-users 表",
"foreignKey": "uni-id-users._id",
"forceDefaultValue": {
"$env": "uid"
}
},
"name": {
"bsonType": "string",
"description": "一级分类",
"title": "一级分类",
"trim": "both"
},

操作步骤:

以上代码复现

预期结果:

联表查询应该可以获取到所有需要查询的内容

实际结果:

没有副表内容,而且当主副表如果调换顺序,同样得不到当前的副表内容
const res = await db.collection(ordergoods,orders).get()
则只出现opendb-mall-goods的内容,uni-pay-orders表内容为空

bug描述:

opendb-mall-goods(副表)和uni-pay-orders(主表)联表查询,获取不到副表内容,单独查询都能获取到内容,无论在前端查询,本地云函数,云端函数,虚拟表,临时表各种方法都是一样,匪夷所思

通过HBuilderX的JQL数据库管理器,直接把以上2个表联表查询,db.collection('opendb-mall-goods,uni-pay-orders').get(),不管哪个表在前面,都是只能获取主表内容,副表内容获取不到

尝试了以下方式。副表数据都能拿到,更是不可思议,难道opendb-mall-goods,uni-pay-orders这两个表天生不对付吗?
db.collection('opendb-mall-goods,uni-id-users').get()
db.collection('uni-pay-orders,uni-id-users').get()

另外一个匪夷所思的问题:见副表userid字段,改名为user_id后,当然查询条件也跟着改了,结果就是查询不到结果,也没有报错

2023-07-30 10:40 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

这几个表里面数据都是哪来的?导出来看一下有没有部分数据对不上,比如有些数据在某个表里面是ObjectId类型,在另一个表是字符串类型

  • 卖火柴的咖啡猫 (作者)

    通过submit按钮提交的订单数据,提交了订单goods才会有order支付数据,我导出来看看

    2023-07-31 11:41

  • 卖火柴的咖啡猫 (作者)

    发现order表中"scene": { "bsonType": "string",},"app_version_code": {"bsonType": "int","description": "客户端版本号(数字形式) 如100",导出数据"scene":1001,"app_version_code":"100",把表中类型改成和数据一致,可是并没有任何作用,另外这2个表的内容是没有重复的

    2023-07-31 16:24

  • DCloud_uniCloud_WYQ

    回复 1***@qq.com: 看下你帖子里面说的主表和副表关联的字段

    2023-08-01 11:05

要回复问题请先登录注册