以下内容以学生和课程之间的多对多关联关系为例,说明如何使用新版关联关系实现数据的新增,修改和删除。
注意:
新版关联关系仅支持 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}]}