hhyang
hhyang
  • 发布:2023-02-09 16:14
  • 更新:2023-02-10 20:35
  • 阅读:294

【报Bug】云端使用JQL联表带条件查询 异常结果

分类:uniCloud

产品分类: uniCloud/App

示例代码:

该JQL在JQL数据库管理器查询正常

const dbCmd=db.command  
const whereFilter={  
    user_id: '6391aea853a7f30001e18627',  
    school_id: '63be64b3642bcb0001fbf67a',  
    create_date: dbCmd.gte(1675669190807).and(dbCmd.lte(1675928390807))  
}  

const order = db  
    .collection(`xxxxx`)  
    .where(whereFilter)  
    .getTemp();  

const menu = db  
    .collection('xxxxx')  
    .getTemp();  

const pack = db  
    .collection('xxxx')  
    .getTemp();  

db.collection(order, menu, pack)  
.orderBy(`create_date`, `desc`)  
.limit(10)  
.get()

实际代码中运行得到异常结果

function baseGetOrderQuery(clientInfo,options={}) {  
    const whereFilter={  
        user_id: '6391aea853a7f30001e18627',  
        school_id: '63be64b3642bcb0001fbf67a',  
        create_date: dbCmd.gte(1675669190807).and(dbCmd.lte(1675928390807))  
    }  

    const dbJQL = uniCloud.databaseForJQL({  
        clientInfo  
    })  
    dbJQL.setUser({  
        role: ['admin']  
    });  

    const order = dbJQL  
        .collection(`xxxx`)  
        .where(whereFilter)  
        .getTemp();  

    const menu = dbJQL  
        .collection('xxxx')  
        .getTemp();  

    const pack = dbJQL  
        .collection('xxxx')  
        .getTemp();  

    return {  
        dbJQL,  
        order,  
        menu,  
        pack  
    }  
}  

// 创建基本查询SQL对象  
const { dbJQL,order,menu,pack } = baseGetOrderQuery(this.getClientInfo());  

const result = await dbJQL  
.collection(order, menu, pack)  
.orderBy(`create_date`, `desc`)  
.limit(10)  
.get()  

return {  
    errCode: 0,  
    myErrCode:0,  
    data:result  
}  

操作步骤:

使用 create_date:dbCmd.gte(1675669190807).and(dbCmd.lte(1675928390807))

使用 create_date:dbCmd.gte(1675669190807)

对比查询

预期结果:

正常返回结果

实际结果:

异常结果

bug描述:

使用 create_date:dbCmd.gte(1675669190807).and(dbCmd.lte(1675928390807)) 多条件时无法正常返回结果

使用 create_date:dbCmd.gte(1675669190807) 正常返回

2023-02-09 16:14 负责人:无 分享
已邀请:

最佳回复

hhyang

hhyang (作者) - 如有问题,请添加QQ1606726660 备注付费咨询

已解决 解决方法如下:

const db = uniCloud.database()  
const dbCmd = db.command

修改为

const dbJQL = uniCloud.databaseForJQL({  
    clientInfo  
})  
const dbCmd=dbJQL.command

原因是 db.commanddbJQL.command 不能混用

hhyang

hhyang (作者) - 如有问题,请添加QQ1606726660 备注付费咨询

别沉 需要解决

hhyang

hhyang (作者) - 如有问题,请添加QQ1606726660 备注付费咨询

2023-02-10 10点38分

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

正常返回的5条结果贴出来一下

  • hhyang (作者)

    之前的数据被我删除了 我创建了两条新的数据 你用这个条件查询即可复现


    create_date: dbCmd.gte(1675747446305).and(dbCmd.lte(1676006646305)) 

    2023-02-10 13:29

  • hhyang (作者)

    正常返回数据在压缩包里面

    2023-02-10 13:29

  • DCloud_uniCloud_WYQ

    回复 hhyang: 你发的两个数据不满足 create_date: dbCmd.gte(1675747446305).and(dbCmd.lte(1676006646305)) 这个条件啊

    2023-02-10 14:11

  • hhyang (作者)

    回复 DCloud_uniCloud_WYQ: 不是查询 2023-2-7 13:24:6 ~ 2023-2-10 13:24:6 之间的数据? 两条数据创建时间分别为 2023-2-9 17:56:43 2023-2-9 17:33:52

    2023-02-10 14:20

  • hhyang (作者)

    回复 DCloud_uniCloud_WYQ: 是我数据发错了 还是其他条件问题?

    2023-02-10 14:22

  • hhyang (作者)

    回复 DCloud_uniCloud_WYQ: 那为啥在 调试器下 能查询出来?

    2023-02-10 17:12

  • DCloud_uniCloud_WYQ

    回复 hhyang: 和上面的截图看串了,确实在这个区间内,方便让我远程看下吗?

    2023-02-10 17:28

  • DCloud_uniCloud_WYQ

    回复 DCloud_uniCloud_WYQ: 可以的话加我QQ 2292434668

    2023-02-10 17:30

  • hhyang (作者)

    回复 DCloud_uniCloud_WYQ: 来

    2023-02-10 17:32

  • hhyang (作者)

    回复 DCloud_uniCloud_WYQ: 加你了麻烦同意下

    2023-02-10 18:00

要回复问题请先登录注册