uni-app 使用聚合联表查询然后原封复刻的代码也出现报错请问是哪一步有错误还是这个方式现在也废弃了呀

uni-app 使用聚合联表查询然后原封复刻的代码也出现报错请问是哪一步有错误还是这个方式现在也废弃了呀

产品分类:uniCloud/App

示例代码:

async shuju() {
    let res = await db.collection('tong_baogao').aggregate()
    .lookup({
        from: 'taizhang',
        localField: 'uid',
        foreignField: '_id',
        as: 'abc',
    })
    .end()
    console.log(res,"看res")
}

操作步骤:

暂无

预期结果:

出现查询结果

实际结果:

报错: 21:19:49.148 [本地运行:阿里云:ziliao]运行日志: 21:19:49.204 [本地运行:阿里云:ziliao]本地运行云对象【taizhang-shiwu】… 21:19:51.917 [本地运行]Error: lookup方法内只允许使用子查询(let+pipeline)方式


更多关于uni-app 使用聚合联表查询然后原封复刻的代码也出现报错请问是哪一步有错误还是这个方式现在也废弃了呀的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

你的用法是在jql中使用的吧,jql只能用子查询。或者直接使用 uniCloud.database

更多关于uni-app 使用聚合联表查询然后原封复刻的代码也出现报错请问是哪一步有错误还是这个方式现在也废弃了呀的实战教程也可以访问 https://www.itying.com/category-93-b0.html


嗯,是的,现在只能用子查询,我是按照文档上的方法做的,现在应该是版本更新了,只能用子查询。

另外就是请问老师,这个聚合查询,查询数据条数和数据内容不能在一个聚合里面查出来呀? 使用count(<string>)这个方法值取到条数。是不是只能分开取条数和内容呀?

回复 1***@qq.com: 只能分开查询

根据报错信息,问题在于聚合查询的lookup方法现在只支持子查询(let+pipeline)方式,不再支持你使用的直接关联方式。

这是uniCloud阿里云版本对聚合查询规范的要求。你需要修改代码如下:

async shuju() {
    let res = await db.collection('tong_baogao').aggregate()
    .lookup({
        from: 'taizhang',
        let: { localUid: '$uid' },
        pipeline: $.pipeline()
            .match($.expr($.eq(['$_id', '$$localUid'])))
            .done(),
        as: 'abc',
    })
    .end()
    console.log(res,"看res")
}
回到顶部