有奖捉虫:行业应用 & 管理与支持文档专题 HOT
以下内容以学生和课程之间的多对多关联关系为例,说明如何使用新版关联关系实现数据的新增,修改和删除。
注意:
新版关联关系仅支持 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
}
]
}
更多条件查询,请参见 多对多关联查询文档


http://www.vxiaotou.com