4***@qq.com
4***@qq.com
  • 发布:2026-03-01 16:04
  • 更新:2026-03-01 16:04
  • 阅读:14

数据无法关联是什么问题

分类:云服务

wxb-bizhi-classify.schema.json
{
"bsonType": "object",
"required": [
"name"
],
"permission": {
"read": true,
"create": false,
"update": false,
"delete": false
},
"properties": {
"_id": {
"description": "存储文档 ID,系统自动生成"
},
"name": {
"bsonType": "string",
"description": "分类名称",
"label": "名称",
"trim": "both",
"minLength": 2,
"maxLength": 8
},
"select": {
"bsonType": "bool",
"description": "是否精选 默认false ,true是精选",
"defaultValue": false
},
"enable": {
"bsonType": "bool",
"description": "是否启用 默认false ,true是启用",
"defaultValue": false
},
"sort": {
"bsonType": "int",
"description": "类别显示顺序",
"label": "排序"
},
"picurl": {
"bsonType": "string",
"description": "缩略图地址"
},
"createTime": {
"bsonType": "timestamp",
"description": "创建时间",
"forceDefaultValue": {
"$env": "now"
}
}
},
"version": "0.0.1"
}

wxb-bizhi-piclist.schema.json
{
"bsonType": "object",
"required": [
"user_id",
"title",
"content"
],
"permission": {
"read": true,
"create": true,
"update": true,
"delete": true
},
"properties": {
"_id": {
"description": "存储文档 ID(用户 ID),系统自动生成"
},
"user_id": {
"bsonType": "string",
"description": "作者ID, 参考uni-id-users 表",
"foreignKey": "uni-id-users._id",
"defaultValue": {
"$env": "uid"
}
},
"classid": {
"bsonType": "string",
"title": "分类",
"description": "分类 id,参考wxb-bizhi-classify表",
"foreignKey": "wxb-bizhi-classify._id"
},
"description":{
"bsonType": "string",
"description": "描述",
"defaultValue":""
},
"score":{
"bsonType": "string",
"description": "评分"
},

    "tabs": {  
        "bsonType": "array",  
        "description": "标签组",  
        "defaultValue":[]  
    },  
    "checked": {  
        "bsonType": "bool",  
        "description": "是否展现:true展现 false不展现",  
        "defaultValue": true  
    },  
    "view_count": {  
        "bsonType": "int",  
        "title": "阅读次量",  
        "description": "阅读次量",  
        "defaultValue":50  
    },  
    "download_count": {  
        "bsonType": "int",  
        "description": "下载次数",  
        "defaultValue":0  
    },  
    "score_count": {  
        "bsonType": "int",  
        "description": "评分数量",  
        "defaultValue":0  
    },  
    "createTime": {  
        "bsonType": "timestamp",  
        "title": "发表时间",  
        "description": "发表时间",  
        "defaultValue": {  
            "$env": "now"  
        }  
    },  
    "picurl": {  
        "bsonType": "string",  
        "description": "壁纸地址"  
    }  
},  
"version": "0.0.1"  

}

云对象的方法
async list({pageSize=9,pageNum=1}={}){
let skip=(pageNum-1)*pageSize
let wer={enable:true}
const dbJQL=uniCloud.databaseForJQL({
clientInfo:this.getClientInfo()
})
let classTemp= dbJQL.collection("wxb-bizhi-classify")
.where(wer)
.orderBy("sort asc")
.skip(skip).limit(pageSize)
.getTemp()
// return classTemp
let picTemp= dbJQL.collection("wxb-bizhi-piclist")
.field("createTime,classid")
.orderBy("createTime desc")
.limit(1).getTemp()

    return await dbJQL.collection(classTemp,picTemp).limit(3).get()  

}  

获得结果
{
"code": 0,
"errCode": 0,
"message": "",
"errMsg": "",
"systemInfo": [],
"data": [{
"_id": "699e887ecbe5c88a55d9587f",
"name": "自然风光",
"sort": 0,
"enable": true,
"picurl": "https://env-00jy5tfqbt3i.normal.cloudstatic.cn/wallpaper/20260301/1772343777863.webp",
"select": true,
"createTime": 1771997309285
}, {
"_id": "699eaac69f151a19a630d806",
"name": "AI美女",
"sort": 4,
"enable": true,
"picurl": "https://env-00jy5tfqbt3i.normal.cloudstatic.cn/wallpaper/20260228/1772274799933.webp",
"select": true,
"createTime": 1772006085510
}, {
"_id": "69a0fe5c952272c52c257a3a",
"name": "动物世界",
"sort": 5,
"enable": true,
"picurl": "https://env-00jy5tfqbt3i.normal.cloudstatic.cn/wallpaper/20260227/1772158554399.webp",
"select": true,
"createTime": 1772158555573
}]
}

两表数据没有关联上

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

Ask小助手 - Ask社区AI助手

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

问题根源
在 JQL 的「虚拟联表」里,副表(wxb-bizhi-piclist)必须先用 where 指出与主表(wxb-bizhi-classify)的关联条件,否则两张表只是简单拼在一起,不会按 foreignKey 自动匹配。
你现在的代码:

let picTemp = dbJQL.collection("wxb-bizhi-piclist")  
  .field("createTime,classid")   // 只取了这两个字段  
  .orderBy("createTime desc")  
  .limit(1)  
  .getTemp()

既没有 where 也没有把 classid 作为关联条件,所以结果里看不到任何 piclist 的数据。

修正做法
给副表临时表加上与主表 _id 的等值条件即可:

let classTemp = dbJQL.collection("wxb-bizhi-classify")  
  .where({ enable: true })  
  .orderBy("sort asc")  
  .skip(skip).limit(pageSize)  
  .getTemp()  

let picTemp = dbJQL.collection("wxb-bizhi-piclist")  
  .where("classid == wxb-bizhi-classify._id") // 关键:指明关联  
  .field("classid,createTime,picurl")          // 需要返回的字段  
  .orderBy("createTime desc")  
  .limit(1)  
  .getTemp()  

return await dbJQL.collection(classTemp, picTemp).get()

这样 JQL 会把 picTempclassidclassTemp_id 匹配,真正完成联表。

内容为 AI 生成,仅供参考

要回复问题请先登录注册