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

请求地址

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

请求参数

属性类型默认值必填说明
access_tokenstring 接口调用凭证
envstring 云环境ID
querystring 数据库操作语句

 

因为需要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 数据包

属性类型说明
errcodenumber错误码
errmsgstring错误信息
pagerObject分页信息
dataArray.<string>记录数组

 

查询结果数据在data数组中,返回data数据形式为

data数据为String型数据,因此需要对获取数据进行String转Object操作。

将String型=》QString=》QByteArray=》QJsonObject 

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐