云开发数据库多层级数据修改

本文讲述了在使用云开发时遇到的深层级数据修改问题,特别是面对没有Mysql等传统数据库基础的情况。作者通过社区寻找资料,尝试解决在数据集层级字段中添加对象的问题。在云函数中,利用了wx-server-sdk和数据库更新操作,但对$符号的作用仍感困惑。文章反映了云开发文档的不足,提示新手需要在实践中不断探索。

前后都采用云开发,设计数据库表时,有些数据还是用obj会清晰一些。当数据层级设置到深层的时候,由于没有Mysql或其他数据库基础,问题也就来了,如何修改深层级数据成了个问题。开始上社区找资料。数据集层级字段如下 字段:array --> array[index].array添加obj。云函数代码如下:

 

const cloud = require('wx-server-sdk')

cloud.init({})

const db = cloud.database();

// 云函数入口函数
exports.main = async (event, context) => {
    try {
        // 这里的_id是课程的_id
        const _ = db.command;
        let {classID, _id, progress} = event;
        // 构建查询条件拿到索引
        // 用索引通配符拿到索引,更新数据。
        await db.collection('ClassInfo').where({
          _id: _id,
          'choicedStudent._openid': cloud.getWXContext().OPENID
        }).update({
            data: {
                'choicedStudent.$.progressSubmit': _.push(progress) 
            }
        });

        // 对于层级数据,用_id定位失效报错
        await db.collection('StudentInfo').where({
          _openid: cloud.getWXContext().OPENID,
          'choicedClass.classID': classID
        }).update({
          data:{
            'choicedClass.$.progressSubmit': _.push(progress)
          }
        });
        
  }catch(err){
    throw err
  }
}

由于官方给予开发文档过于简单,很多功能没法给新手很好的指引,还得在社区里多逛一逛。在次需求之前,个人以为where只能定位数据记录的行,搭配。

目前无法弄明白代码中的具体意思,$是如何得出的。只能照猫画虎,先满足需求!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值