收藏
回答

云开发调用HTTP API插入数据库,字段内容包含英文引号报错

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 工具 wx7fcd415d0a2dc1cd 2.6.5

- 当前 Bug 的表现(可附上截图)

调用 https://api.weixin.qq.com/tcb/databaseadd 插入记录,内容包含英文引号(已转义),返回 605101(微信后台 HTTP API 错误:查询语句解析失败), 请问如何插入 英文引号?

{
    "query": "db.collection(\"test\").add({data:[{intro:\"\\\"测试!\"}]})",
    "env": "******"
}
{
    "errcode": -605101,
    "errmsg": "SyntaxError: Line 1, column 42: Unexpected token 'identifier' hint: [TZCUiA02262028]"
}


插入其他转义字符可正常插入

{
    "query": "db.collection(\"test\").add({data:[{intro:\"\\\t测试!\"}]})",
    "env": "******"
}
{
    "errcode": 0,
    "errmsg": "ok",
    "id_list": [
        "c7b5c6fc-a42a-4779-947b-75638aabbdff"
    ]
}


- 预期表现

可以正常插入记录


- 复现路径


- 提供一个最简复现 Demo

{
    "query": "db.collection(\"test\").add({data:[{intro:\"\\\"测试!\"}]})",
    "env": "******"
}


最后一次编辑于  07-29
回答关注问题邀请回答
收藏

1 个回答

  • 邓坤力
    邓坤力
    07-29


    这段其实是这么一段字符串


    db.collection("test").add({data:[{intro:"\"测试!"}]})


    多了个 \"


    07-29
    赞同
    回复 5
    • 建生
      建生
      07-29

      我要插入的内容是  

      "测试!  

      包含引号的,这个 \" 不是多的,下面这句在控制台是可以正常插入的

      db.collection("test").add({data:[{intro:"\"测试!"}]})

      07-29
      回复
    • 邓坤力
      邓坤力
      07-29回复建生
      在 http api 中的话那就是 \"\\"测试!\"
      07-29
      回复
    • 建生
      建生
      07-29回复邓坤力

      \"\\"测试!\"

      不知道你回答之前有没有试过,这样的语法是错误的

      {
          "query": "db.collection(\"test\").add({"data":[{"intro":\"\\"测试!\"}]})"
      }
      {
          "errcode": 47001,
          "errmsg": "data format error hint: [tYfoKA06282162]"
      }


      07-29
      回复
    • 邓坤力
      邓坤力
      07-29回复建生

      不好意思这个确实转义比较多确实比较难看清楚,建议外围用单引号呢

      "query": "db.collection('test').add({data:[{intro:'"测试!'}]})"

      07-29
      回复
    • 建生
      建生
      07-29回复邓坤力

      需要改成这样才可以

      "query": "db.collection('test').add({data: [{intro:' \\\"测试! '}]})"

      但你们这个HTTP API后台的解析也太不按标准了吧

      另外云开发的控制台显示,外围都是双引号的


      07-29
      回复