在onLoad()内
qqmapsdk.reverseGeocoder({
location: { latitude: latitude, longitude: longitude },
success: function (res) {//成功后的回调
let address=res.result.address;
var C = res.result.address_component.city;
var D = res.result.address_component.district;
if(D==''){
currentArea = C;
}else{
currentArea = D;
}
reverseGeocoder返回的数据可以输出前端显示,可以直接传给数据库查询,但是一旦传给函数或者数据库命令就失效。
下面是数据库查询代码:
wx.cloud.init();
const db = wx.cloud.database({
env: 'XXXXXX'
});
const _ = db.command
const areaUp=currentArea;
db.collection('news').where({
area:_.or(_.eq(areaUp),_.eq('top')),
}).get({
success: function (res) {
newsData=res.data.sort(function (a, b) {
return (a.ranking - b.ranking);
});
}
})//
如果把currentArea替换成普通字符串,就正常运行并返回正确结果。另外address获取的let变量赋值给var定义的全局变量也无法用于push()函数压入已有数组,有大神知道这是啥问题吗?
已解决,把读取数据库放到回调函数里就可以了