y***@sina.com
y***@sina.com
  • 发布:2024-02-26 11:54
  • 更新:2025-01-08 06:27
  • 阅读:269

【报Bug】JQL更新数组的时候,以数组下标作为key,报数据库验证失败

分类:uniCloud

产品分类: uniCloud/App

示例代码:
const db = uniCloud.database();    
let collection = db.collection("table1")    
let res = await collection.where({_id:'doc-id'})    
  .update({    
    arr: {    
      1: "uniCloud"    
    }    
  })

操作步骤:

更新数组时,以数组下标作为key

预期结果:

数据库数组字段更新成功

实际结果:

更新失败,数据库报错

bug描述:

JQL文档里面的说明:
更新数组时,以数组下标作为key即可,比如以下示例将数组arr内下标为1的值修改为 uniCloud

const db = uniCloud.database();    
let collection = db.collection("table1")    
let res = await collection.where({_id:'doc-id'})    
  .update({    
    arr: {    
      1: "uniCloud"    
    }    
  })

按此方法,数据库会报错:
数据库验证失败:[\"xxx(字段名)\"]类型无效

2024-02-26 11:54 负责人:无 分享
已邀请:
limingfan

limingfan

@DCloud_HB_WJ 官方不解决下这个问题吗

1***@qq.com

1***@qq.com

async upSeenList(uid,num){

    await db.collection("uni-id-users").doc(uid).update({         

        seenlist:{  
             1:'a'  
        }         
    })  

}
我的这样可以,但是把下标 1 换成变量就不行了,好像是语法不支持

大菜头

大菜头

我也碰上了同样的问题,照官方文档写也不行,但看B站教程,2022年的咸虾米视频中,人家是可以的,也不知道是不是因为版本更新后就不行了,如果这样,官方也不作一下说明太坑了。

要回复问题请先登录注册