以下内容以学生和课程之间的多对多关联关系为例,说明如何使用新版关联关系实现数据的新增,修改和删除。
注意:
仅 MySQL 数据库支持多对多关联关系,如您的底层不是 MySQL 数据库,则无法创建。


新建数据模型
新建学生和课程两个数据模型。
在学生模型中新建关联关系,名称为学生选课,关系为多对多,同时新建该关联关系在课程模型中的名称为课程表。
学生模型中记录学生姓名及每名学生选择了哪些课程;课程模型中记录课程名称及每门课程被哪些学生选择。
学生表:


关联关系配置:


课程表:


关联关系配置:


新建课程数据
首先,可以在课程中录入一些数据。
使用 APIs 中的自定义方法调用数据模型方法新增数据,示例代码如下:
新增单条:
module.exports = async function (params, context) {const result = await context.callModel({name: 'kc_1j8ab14', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaCreateV2', // 数据模型方法标识params: {data: {mc: "美术",},},});return result}
新增多条:
module.exports = async function (params, context) {const result = await context.callModel({name: 'kc_1j8ab14', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaBatchCreateV2', // 数据模型方法标识params: {data: [{mc: "化学",}, {mc: "计算机",}]}});return result}
可查看到数据新增成功,当前模型中存在以下数据。


新建学生数据
下面可以新增几条学生选课数据。
新增单条:
module.exports = async function (params, context) {const result = await context.callModel({name: 'kc_1j8ab14', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaCreateV2', // 数据模型方法标识params: {data: {"xsxk":[{"_id":"82JW8VJQDN"},{"_id":"82K0F7F0ZN"}],"xm":"郑涛"}},});return result}
当前模型中存在以下数据:


更新学生数据
更新单条:
module.exports = async function (params, context) {const result = await context.callModel({name: 'xs_7axojjz', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaUpdateV2', // 数据模型方法标识params: {data: {"xsxk":[{"_id":"82JW8VJQDN"}],"xm":"孙锦"},filter: {where: {$and: [{_id: {$eq: "82K4DS472G", // 更新单条时,推荐传入_id数据标识进行操作},},],},},},});return result}
数据更新成功。


课程中的关联数据也已更新。


删除学生数据
删除单条:
module.exports = async function (params, context) {const result = await context.callModel({name: 'xs_7axojjz', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaDeleteV2', // 数据模型方法标识params: {filter: {where: {$and: [{_id: {$eq: "82K3GF06EU", // 删除单条时,推荐传入_id数据标识进行操作},},],},},},});return result}
删除数据成功。


同时在课程中的数据关联也被删除。


查询学生数据
查询单条:
module.exports = async function (params, context) {const result = await context.callModel({name: 'xs_7axojjz', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaGetItemV2', // 数据模型方法标识params: {filter: {where: {$and: [{_id: {$eq: "82JWFD8K3W", // 查询单条时,推荐传入_id数据标识进行操作},},],},},select: {$master: true, // 常见的配置,返回主表},},});return result}
查询结果:
{"owner": "1534736158943625218","createdAt": 1697510146856,"createBy": "1534736158943625218","xm": "王丽","updateBy": "1534736158943625218","_id": "82JWFD8K3W","updatedAt": 1697510146856}
查询多条:
module.exports = async function (params, context) {const result = await context.callModel({name: 'xs_7axojjz', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaGetRecordsV2', // 数据模型方法标识params: {filter: {where: {},relateWhere:{ // 关联表查询xsxk:{ // 学生表中的关联字段where:{mc:{ // 课程表中需要查询的字段名称$in: ["地理"] // 查询选地理课的学生名单}}}}},select: {$master: true, // 常见的配置,返回主表},},});return result}
查询到选择地理课的学生名单:
{"records": [{"owner": "1534736158943625218","createdAt": 1697513146058,"createBy": "1534736158943625218","xm": "刘超","updateBy": "1534736158943625218","xsxk": [],"_id": "82K4DS472G","updatedAt": 1697523930135},{"owner": "1534736158943625218","createdAt": 1697513632851,"createBy": "1534736158943625218","xm": "郑涛","updateBy": "1534736158943625218","xsxk": [],"_id": "82K5PN5TBN","updatedAt": 1697513632851}]}