Qt 连接管理微信小程序云数据库二(查询微信小程序云数据库中JSON数据)
腾讯微信小程序开发文档中对数据库查询记录描述为:请求地址POST https://api.weixin.qq.com/tcb/databasequery?access_token=ACCESS_TOKEN请求参数属性类型默认值必填说明access_tokenstring是接口调用凭证envst...
·
腾讯微信小程序开发文档中对数据库查询记录描述为:
请求地址
POST https://api.weixin.qq.com/tcb/databasequery?access_token=ACCESS_TOKEN
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
access_token | string | 是 | 接口调用凭证 | |
env | string | 是 | 云环境ID | |
query | string | 是 | 数据库操作语句 |
因为需要POST发送数据,我们使用QNetworkAccessManager完成访问数据操作的控制。使用QJsonObject处理需要发送的data数据(JSON)。
void NetDataConnect::managerLoad(QString account,QString pw){
request->setUrl(QUrl(tr("https://api.weixin.qq.com/tcb/databasequery?access_token=%1").arg(Access_Token)));
QString query = tr("db.collection('login').where({_id: '%1',password: '%2'}).get()").arg(account,pw);
QString env = "data-hama";
QJsonObject obj{
{"query",query},
{"env",env}
};
QByteArray objBy = QJsonDocument(obj).toJson();
reply = manager->post(*request,objBy);
connect(reply,SIGNAL(readyRead()),this,SLOT(slotManagerLoad()));
}
其中Access_Token为之前获取的微信后台接口调用凭据,获取方法看我之前的博客https://blog.csdn.net/zjgo007/article/details/104580570
query为微信小程序云数据库的查询语句,云数据库介绍可查看微信官方文档中的介绍。我程序中account,pw为小程序中用户登录名和登录密码(非微信账号密码)
env为自己小程序云数据库的云环境ID,可在云开发控制台中找到
将JSON对象obj用QJsonDocument转为QBytyArray字节数组,当QNetworkReply发出readyRead()信号后,获取应答对象中的数据。
void NetDataConnect::slotManagerLoad(){
QByteArray ba = reply->readAll();
QJsonDocument js = QJsonDocument::fromJson(ba);
int totalInt = js["pager"].toObject()["Total"].toInt();
QJsonValue dataValue = js["data"].toArray().first();
qDebug()<<dataValue;
QString dataStr = dataValue.toString();
managerObject = QJsonDocument::fromJson(dataStr.toUtf8()).object();//data数据转为Object
if(totalInt != 0){
emit managerLoaded(true);
}else{
emit managerLoaded(false);
}
}
QJsonObject NetDataConnect::getManagerInfo(){//返回从服务器中获得的数据库内容
return managerObject;
}
readAll()返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误信息 |
pager | Object | 分页信息 |
data | Array.<string> | 记录数组 |
查询结果数据在data数组中,返回data数据形式为
data数据为String型数据,因此需要对获取数据进行String转Object操作。
将String型=》QString=》QByteArray=》QJsonObject
到此小程序云数据库查询结束。
更多推荐
已为社区贡献8条内容
所有评论(0)