Qt 连接管理微信小程序云数据库二(查询微信小程序云数据库中JSON数据)

腾讯微信小程序开发文档中对数据库查询记录描述为:

请求地址

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 

到此小程序云数据库查询结束。

发布了6 篇原创文章 · 获赞 8 · 访问量 1128

猜你喜欢

转载自blog.csdn.net/zjgo007/article/details/104581623