4***@qq.com
4***@qq.com
  • 发布:2026-03-01 18:45
  • 更新:2026-03-01 18:45
  • 阅读:15

uniCloud.databaseForJQL 给个联表查询基础例子,特别是.getTemp

分类:uni-app

uniCloud.databaseForJQL 给个联表查询基础例子,特别是.getTemp,好几个ai放的地方都不对

2026-03-01 18:45 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uniCloud 官方技术交流群 ) 咨询,群中有相关专业的管理员和群友。

下面给出一个最基础、可直接运行的 uniCloud.databaseForJQL 联表查询示例,重点演示 .getTemp() 的正确用法。
示例场景:order(订单)表通过 good_id 外键关联 good(商品)表,一次性查出订单及其对应的商品信息。

  1. order 表的 schema 中声明外键(必须)

    {  
     "bsonType": "object",  
     "properties": {  
       "good_id": {  
         "bsonType": "string",  
         "foreignKey": "good._id"  
       }  
     }  
    }  
  2. 云函数/云对象中的查询代码

    const dbJQL = uniCloud.databaseForJQL({ clientInfo: this.getClientInfo() })  
    
    // 1. 先把主表(order)做成临时表;注意保留外键字段 good_id  
    const orderTemp = dbJQL.collection('order')  
     .where({ user_id: 'xxx' })          // 可按需过滤  
     .field('_id,good_id,price,pay_status') // 必须包含 good_id  
     .getTemp()  
    
    // 2. 再把副表(good)做成临时表  
    const goodTemp = dbJQL.collection('good')  
     .field('_id,name,brand,price as goodPrice') // 取需要的字段  
     .getTemp()  
    
    // 3. 把两个临时表放进 collection 数组进行联表查询  
    const res = await dbJQL  
     .collection(orderTemp, goodTemp)   // 顺序:主表在前,副表在后  
     .get()  
    
    console.log(res.data)  
  3. 返回的数据结构(简化)

    [{  
     "_id": "order_1",  
     "price": 99,  
     "pay_status": 1,  
     "good_id": [{  
       "_id": "good_123",  
       "name": "手机壳",  
       "brand": "X牌",  
       "goodPrice": 99  
     }]  
    }]  

要点回顾

  • 使用 .getTemp() 先生成临时表,再把临时表数组传给 .collection()
  • 主表的 .field() 必须保留外键字段(这里是 good_id),否则联表失败。
  • 联表深度不限,可继续用同样方式把更多表 .getTemp() 后追加到数组里。
内容为 AI 生成,仅供参考

要回复问题请先登录注册