收藏
回答

云开发数据模型多对多中间表如何获取

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wx70b553d179ac76c3 rainbow-cloud-5gzoz8ka478b852f 3.2

我在云开发的数据模型中新建了文章表和标签表,二者是多对多的关系,我现在需要查询中间表的数据,虽然从云后台的犄角旮旯里找到了中间表名,但是select报错

Result: WxCloudSDKError: 【错误】参数错误。运行 query 失败, 参数错误。ecode:PE-MYS-4002, message:Query is syntactically wrong, detailCode:SQLSTATE: 42S02, detailMessage=Table 'rainbow-cloud-xxxxxxxxxx.mid_xxxxx' doesn't exist

另一个中间表是可以查询到数据的,都在同一个环境创建的数据模型,一个可以查询,一个查询不到。

回答关注问题邀请回答
收藏

2 个回答

  • 云开发小助手CloudBase
    云开发小助手CloudBase
    星期四 10:33

    在云开发中,多对多关系通常通过中间表来实现。假设我们有两个表:学生表(students)和课程表(courses),它们之间的多对多关系通过一个中间表(student_courses)来表示。

    要获取多对多中间表的数据,您可以使用云开发的 API 进行查询。以下是一些示例:

    根据学生 ID 获取选课信息

    const cloud = require('wx-server-sdk')
    cloud.init()
    
    const db = cloud.database()
    
    exports.main = async (event, context) => {
      try {
        const studentId = event.studentId
        const result = await db.collection('student_courses')
          .where({
            studentId: studentId
          })
          .get()
        return result.data
      } catch (err) {
        console.error(err)
        return err
      }
    }
    


    根据课程 ID 获取选课学生信息

    const cloud = require('wx-server-sdk')
    cloud.init()
    
    const db = cloud.database()
    
    exports.main = async (event, context) => {
      try {
        const courseId = event.courseId
        const result = await db.collection('student_courses')
          .where({
            courseId: courseId
          })
          .get()
        return result.data
      } catch (err) {
        console.error(err)
        return err
      }
    }
    


    示例数据结构

    假设我们有以下数据结构:

    学生表(students)

    idname1张三2李四

    课程表(courses)

    idname101数学102英语

    中间表(student_courses)

    studentIdcourseId110111022101

    通过上述 API 调用,您可以获取到学生选课信息或课程选课学生信息。


    星期四 10:33
    有用
    回复 2
    • null
      null
      星期四 17:16
      我用的是 云开发的mysql数据库,数据模型中微搭自动创建的多对多关系,我不知道多对多的中间表名是什么,找到了表名也拿不到里面的数据,会报问题描述里面的错误
      星期四 17:16
      回复
    • null
      null
      1天前
      使用$runSQL报错,node-sdk@3.2
      1天前
      回复
  • 跨商通
    跨商通
    星期六 13:11

    多对多关系,不要在nosql数据库里分表。建议合成一个表。

    星期六 13:11
    有用
    回复 1
    • null
      null
      1天前
      使用的是云mysql,现在换成第三方mysql了,倒是能看到中间表了。但是不知道什么原因runSQL没法用了,报错WxCloudSDKError: 【错误】内部错误。未知错误
      1天前
      回复
登录 后发表内容
问题标签