收藏
回答

使用云开发 HTTP API 向云开发数据库中添加数据提示 47001

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


使用 HTTP API 

https://api.weixin.qq.com/tcb/databaseadd?access_token=ACCESS_TOKEN

向小程序云开发数据库中添加数据时,若数据中出现中文会提示47001错误,提示如下:

{"errcode":47001,"errmsg":"data format error hint: [R07l406662278]"}

1)若Json数据中没有中文就不会出现这个提示,而且会成功添加到数据库,

2)使用PostMan模拟也不会出现错误提示,中文英文都可成功添加

困扰了好几天了,请哪位大神帮忙诊治下,不胜感激

本人后台使用nodejs,粘贴代码如下:

async function addBook(){

            let token = await tokenModel.get()

            //console.log(token.accessToken)

            var rowContents={

            "env": "hxxx-xxxxx",

            "query": `db.collection("books").add({data: [{"title" : "西游记",

                    "author": "吴承恩"}]})`

            }

            contents=JSON.stringify(rowContents)

            //console.log(contents)    

            const options = {

            hostname: 'api.weixin.qq.com',

            port: 443,

            path: '/tcb/databaseadd?access_token='+token.accessToken,

            method: 'POST',

            headers:{

            'Content-Type' : 'application/json;charset=utf8',

            'Content-Length' :contents.length      

            },

            }

            var req=https.request(options,function(res){

            res.setEncoding('utf8')

            res.on('data',(data)=>{

            console.log("返回的内容:",data)

            })

            

            })

            req.write(contents)

            req.end()

}


将代码中的“西游记”、“吴承恩”改成“xiyouji”、“wuchengen”就没有任何问题,如下:

{"errcode":0,"errmsg":"ok","id_list":["b6478027-3529-464a-bcc9-0a9f49fb2c34"]}





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

5 个回答

  • 邓坤力
    邓坤力
    06-24

    如果是 postman 正常那就是代码的问题了,试试用 request 库直接朝 https://xxx 发请求呢,不带端口号。

    06-24
    赞同 1
    回复
  • 牛
    06-24

    建议抓包对比一下postman的raw http request与你用nodejs发出的http包。

    06-24
    赞同
    回复
  • Starkwang
    Starkwang
    06-24

    postman没问题的话,说明接口和传参是正确,应该是代码的问题

    06-24
    赞同
    回复
  • acrack
    acrack
    07-11

    楼主解决了吗

    07-11
    赞同
    回复
  • 老张
    老张
    07-08

    建议用JSON.stringify一下,我都是这样拼装string的,一次就通过。


    let dataStr = JSON.stringify(myDoc)

    let query = `db.collection("books").add({data: [${dataStr}]})`




    07-08
    赞同
    回复