VenusYan 2023-05-22 11:24 采纳率: 100%
浏览 25
已结题

小程序云开发数据库的空白值覆盖写入

小程序云开发数据库的空白值覆盖写入
如图,

img

数据库中初始含有_id为手机号,字段名为日期(分上下午)的考勤记录,初始为"#FfFFff"空白值,过期(第二天)需将全部剩余空白值覆盖写入为失败值,空白值可能在不同条记录中也可能在同一条记录不同字段中,可能很多也可能一个没有,请问此操作该如何实现

checkin1.where({
      ziduanming? : "#FFFFFF"
    })
    .update({
      data: {
        ziduanming? : "#ED1C24"
      },
    })

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2023-05-22 11:57
    关注

    数据库表设计有问题,应该按照关系数据库那样checkin每条记录值如下

    • 自动id,手机号,日期,上午颜色,下午颜色

    这样,就可以比较运算符来查询过期的记录。
    字典形式的只能是取出所有记录依次遍历字段值判断是#ffffff后更新字段值了,示例大概如下

    
        let d = new Date(), m = d.getMonth() + 1, d = d.getDate();
        //当前日期数字形式
        let dateCur = pareseInt(`${d.getFullYear()}${m < 10 ? '0' + m : m}${d < 10 ? '0' + d : d}`)
        db.collection('checkin1').get().then(res => {
            // res.data 是一个包含集合中有权限访问的所有记录的数据,不超过 20 条。记录数超过20条需要分页获取
            //具体看https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/read.html这里最后
            let re = /^\d{8}[AP]$/;//考核字段正则
            res.data.forEach(item => {
                //选出考核字段名,过期,并且为白色
                let fileds = Object.keys(item).filter(i => re.test(i) && item[i] == '#FFFFFF' && parseInt(i) < dateCur);
                if (fileds.length) {//存在需要更新字段
                    let data = {};
                    fileds.forEach(i => {
                        data[i] = '#ED1C24'
                    });
                    db.collection('checkin1').doc(item._id).update({ data });
                };
            })
        })
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月31日
  • 已采纳回答 5月23日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊