Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说微信小程序云开发数据库 网页管理后台「终于解决」,希望能够帮助你!!!。
function getAccessToken(){
$.ajax({
url:'https://api.weixin.qq.com/cgi-bin/token?appid='+data.appid+'&secret='+data.secret+'&grant_type='+data.grant_type,
method:"GET",
success: res=>{
//获取access_token
console.log(res)
return res.access_token
},
error: err=>{
console.log(err)
}
})
}
在调用接口时出现了跨域问题
解决方案: 使用node.js搭建本地代理服务器
// proxy.js
const http = require('http');
const request = require('request');
var urltool = require('url');
var querystring = require('querystring');
const hostIp = '127.0.0.1';
const apiPort = 6060;
const data={
appid:"xxx",
secret:"xxx",
grant_type:"client_credential",
env:"xxxx"
};
//创建 API 代理服务
const apiServer = http.createServer((req, res) => {
console.log("***************************************")
console.log('[请求]来自='+req.url);
if(req.url=="/access_token"){
getAccessToken(res)
}
});
//监听 API 端口
apiServer.listen(apiPort, hostIp, () => {
console.log('代理接口,运行于 http://' + hostIp + ':' + apiPort + '/');
});
function getAccessToken(res){
const url='https://api.weixin.qq.com/cgi-bin/token?appid='+data.appid+'&secret='+data.secret+'&grant_type='+data.grant_type;
request({
url: url,//请求路径
method: "GET",//请求方式,默认为get
headers: {
//设置请求头
"content-type": "application/json",
},
body: JSON.stringify(data)//post参数字符串
}, function(error, response, body) {
if (!error && response.statusCode === 200) {
//编码类型
res.setHeader('Content-Type', 'text/plain;charset=UTF-8');
//允许跨域
res.setHeader('Access-Control-Allow-Origin', '*');
//返回代理内容
console.log("返回数据:"+body)
res.end(body);
}
});
}
直接运行
再次通过ajax访问,调用接口,成功获取到access_token。
接口调用凭证 access_token
云环境ID env
数据库操作语句 query
function getCollectionFeedback(res,req){
//查询feedback
var postData = '';
var postObjc = '';
// 给req对象注册一个接收数据的事件
req.on('data',function (chuck) {
postData += chuck;
})
// 到post请求数据发完了之后会执行一个end事件,这个事件只执行一次
req.on('end', function () {
postObjc = querystring.parse(postData);
// 打印出post请求参数,
const query="db.collection(\"feedback\").where({}).get()";
const querydata={
env:data.env,
query:query
}
const url='https://api.weixin.qq.com/tcb/databasequery?access_token='+ postObjc.access_token;
request({
url: url,//请求路径
method: "POST",//请求方式,默认为get
headers: {
//设置请求头
"content-type": "application/json",
},
body: JSON.stringify(querydata)//post参数字符串
}, function(error, response, body) {
if (!error && response.statusCode === 200) {
//编码类型
res.setHeader('Content-Type', 'text/plain;charset=UTF-8');
//允许跨域
res.setHeader('Access-Control-Allow-Origin', '*');
//返回代理内容
console.log("返回数据:"+body)
res.end(body);
}
});
})
}
获取到数据库数据后,显示在前端网页上,效果如下:
插入、删除、更新数据库同理,传入需要的参数和数据库语句即可获取到相应的数据。