收藏
回答

云开发数据库如何在数组中添加一个元素?

在已知name,subjectName的情况下,如何在相对应的text中添加一个元素url4?

目前想通过在云函数中遍历找到对应的下标,用push方法将元素加入到对应数组后整体更新subject,代码如下: 但是在测试中语句并没有执行,newSubject并没有更新旧的subject

const facultys = db.collection('facultys')
// 云函数入口函数
exports.main = async (event, context) => {
   return await facultys
    .where({
      name: event.xueyuan
      // "subject.subjectName": event.xueke
    }).get({
      successfunction(res){
        var newSubject=res.result.data[0].subject;//获取subject
        //console.log(newSubject.length);

        for(var i=0;i<newSubject.length;i++){//遍历subject获取对应学科名位置
          if(newSubject[i].subjectName===event.xueke)
          {
            newSubject[i].text.push(event.shijuan);//在text中添加试卷
            //用newSubject更新老subject
            facultys.where({
              name:event.xueyuan
            }).update({
              data:{
                subject:newSubject
              },
              success:res=>{
                console.log("更新成功",res);
              },
              fail:err=>{
                console.log("更新失败",err)
              }
            });
            break;
          }
        }
      },//end success
      failconsole.error
    })
}
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-05-05
                const _ = db.command
                db
          .collection('facultys')
          .where({
            name: '计算机与网络空间安全学院',
            'subject.subjectName''软件工程'
          })
          .update({
            data: {
              'subject.$.text': _.push('url4')
            }
          })
    
    2020-05-05
    有用 3
    回复
登录 后发表内容
问题标签