腾讯云微搭低代码 如何使用新版关联关系

以下内容以学生和课程之间的多对多关联关系为例,说明如何使用新版关联关系实现数据的新增,修改和删除。

相关产品
腾讯云微搭低代码 产品页,含版本规格、价格与购买入口。

注意:仅 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 } ]}

更多条件查询,请参见 多对多关联查询文档。

赞 (0)
上一篇 4天前
下一篇 4天前