小程序云开发数据库的空白值覆盖写入
如图,
数据库中初始含有_id为手机号,字段名为日期(分上下午)的考勤记录,初始为"#FfFFff"空白值,过期(第二天)需将全部剩余空白值覆盖写入为失败值,空白值可能在不同条记录中也可能在同一条记录不同字段中,可能很多也可能一个没有,请问此操作该如何实现
checkin1.where({
ziduanming? : "#FFFFFF"
})
.update({
data: {
ziduanming? : "#ED1C24"
},
})
数据库表设计有问题,应该按照关系数据库那样checkin每条记录值如下
这样,就可以比较运算符来查询过期的记录。
字典形式的只能是取出所有记录依次遍历字段值判断是#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 });
};
})
})
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!