文档中心>腾讯云微搭低代码>实践教程>如何使用新版关联关系

如何使用新版关联关系

最近更新时间:2024-07-02 11:02:01

我的收藏
以下内容以学生和课程之间的多对多关联关系为例,说明如何使用新版关联关系实现数据的新增,修改和删除。
注意:
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
}
]
}
更多条件查询,请参见 多对多关联查询文档