微信小程序云开发-云函数更新数据时data中的key值使用变量

//在云数据库中有数据
{
     
  pinglun:[
    {
     id:0,text:"一条数据",reply[{
     },{
     },{
     }]},
    {
     id:1,text:"一条数据",reply[{
     },{
     },{
     }]},
    {
     id:2,text:"一条数据",reply[{
     },{
     },{
     }]},
    {
     id:3,text:"一条数据",reply[{
     },{
     },{
     }]}
  ]
}
//需要根据前端传来的index,选中pinglun[index],往arr中插入一条数据,

//云函数文件代码
  const value=event.value
  app.router('addHuifu',async(ctx)=>{
     
    await db.collection('HomeClassify').where({
     
      _id:event._id,
      
    }).update({
     
      data:{
     
        //本来这里的 [value] 值应该是 'pinglun.1.reply', 但是这里的1(也就是pinglun这个数组的下标)是前端页面动态传来,而 'pinglun.1.reply' 这样的形式是无法使用变量的,所以我选择在前端页面就拼接成字符串,然后传一个变量到云函数,而使用变量的方法就是加一个中括号,[value]
        [value]:_.push({
     
          openId:event.openId,
          nickName:event.nickName,
          avatarUrl:event.avatarUrl,
          text:event.text,
          createTime:event.createTime,
          dianzan:[],
         
        })
      }
    })
    ctx.body = event;
  });
//调用云函数文件
   let that=this;
   var value='pinglun.'+that.data.index+'.reply';
   wx.cloud.callFunction({
     
     name:'platedetail',
     data:{
     
       $url:'addHuifu',
       openId:that.data.openId,
       _id:that.data._id,
      //i:that.data.index, //本来是打算传一个数组下标
        value:value,// 拼接成字符串再传
       nickName:that.data.userInfo.weixinInfo.nickName,
       avatarUrl:that.data.userInfo.weixinInfo.avatarUrl,
       text:that.data.huifuKey,
       createTime:days(),
     },
     success(res){
     
       console.log(res)
     },
     fail(err){
     
       console.log(err);
     }
   })

简单来说:在云函数data中的key使用变量需要用 [ 变量名] 括起来。

你可能感兴趣的:(微信小程序云开发,javascript)