我在云开发的数据模型中新建了文章表和标签表,二者是多对多的关系,我现在需要查询中间表的数据,虽然从云后台的犄角旮旯里找到了中间表名,但是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
另一个中间表是可以查询到数据的,都在同一个环境创建的数据模型,一个可以查询,一个查询不到。
在云开发中,多对多关系通常通过中间表来实现。假设我们有两个表:学生表(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 调用,您可以获取到学生选课信息或课程选课学生信息。
Result: WxCloudSDKError: 【错误】内部错误。未知错误
【操作】调用 models.$runSQL
【错误码】InternalError
【请求ID】c85e4642-6137-475d-99d9-e3583311373c
at new WxCloudSDKError (/var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:86:28)
at /var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:183:31
at step (/var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:77:23)
at Object.next (/var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:58:53)
at fulfilled (/var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:48:58)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
多对多关系,不要在nosql数据库里分表。建议合成一个表。
Result: WxCloudSDKError: 【错误】内部错误。未知错误
【操作】调用 models.$runSQL
【错误码】InternalError
【请求ID】c85e4642-6137-475d-99d9-e3583311373c
at new WxCloudSDKError (/var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:86:28)
at /var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:183:31
at step (/var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:77:23)
at Object.next (/var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:58:53)
at fulfilled (/var/user/node_modules/@cloudbase/wx-cloud-client-sdk/lib/wxCloudClientSDK.cjs.js:48:58)
at processTicksAndRejections (internal/process/task_queues.js:97:5)