l1175133146 2023-03-01 14:28 采纳率: 100%
浏览 15
已结题

小程序云函数获取数据库字段与当前时间比对,然后操作数据库其他的字段

微信小程序云函数,一个志愿者活动有报名阶段和活动结束阶段,在数据表中设计了一个记录活动阶段的字段(0代表报名阶段 1代表活动进行阶段 2代表活动结束阶段),表中还有活动报名结束时间及活动开始时间和结束时间,云函数定时运行,获取当前时间,然后和活动报名结束时间及活动开始时间和结束时间进行比对,更改记录活动阶段的字段在报名结束时间和活动结束阶段自动变成1和2,活动结束阶段自动发放积分。这个怎么写,我写的查不到数据

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const db = cloud.database()
const _ = db.command
// 云函数入口函数
exports.main = async (event, context) => {
    var D = new Date()
    var N = D.getFullYear() + ''
    var Y = D.getMonth() + 1 + ''
    var R = D.getDate() + ''
    var S = D.getHours() + ''
    var F = D.getMinutes() + ''

    if (Y.length < 2) {
        Y = '0' + Y
    }

    if (R.length < 2) {
        R = '0' + R
    }

    if (S.length < 2) {
        S = '0' + S
    }

    if (F.length < 2) {
        F = '0' + F
    }

    var E = N + Y + R + S + F 
    var E1 = new Date(E)
    // var E1=Number(E)
    console.log('E1',E1)
    await db.collection('LXZhiYuanZhe_HuoDong').where({
        HuoDong_KaiShiShiJian:_.gte(E1)
    }).get().then(res => {
        // res.data 是一个包含集合中有权限访问的所有记录的数据,不超过 20 条
        console.log(res.data)
      })
   
}

  • 写回答

1条回答 默认 最新

  • 以山河作礼。 新星计划导师 2023-03-01 14:42
    关注
    
    
    ```python
    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    
    cloud.init({
      env: 'your-env-id'
    })
    
    // 云函数入口函数
    exports.main = async (event, context) => {
      const db = cloud.database()
      const _ = db.command
      const now = Date.now()
    
      // 获取需要处理的活动列表
      const activities = await db.collection('activities')
      .where({
        endTime: _.lt(now), // 活动结束时间小于当前时间
        status: 0, // 报名阶段
      })
      .get()
    
      // 更新活动状态
      const promises = activities.data.map(async activity => {
        const { _id, startTime, endTime } = activity
    
        // 判断当前时间是否处于活动的报名阶段
        let status = 0
        if (now >= startTime && now < endTime) {
          status = 1
        } else if (now >= endTime) {
          status = 2
        }
    
        // 如果处于活动结束阶段,则发放积分
        if (status === 2) {
          const res = await sendPoints()
          if (res.errCode !== 0) {
            console.error('发放积分失败:', res)
          }
        }
    
        // 更新活动状态
        return db.collection('activities')
        .doc(_id)
        .update({
          data: {
            status,
          },
        })
      })
    
      return Promise.all(promises)
    }
    
    // 发放积分
    async function sendPoints () {
      // TODO:发放积分
    }
    
    
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月9日
  • 已采纳回答 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口