封装一个微信小程序获取数据库数据的函数
第一步
我在微信小程序里建立了一个文件夹lib,里面放置我的封装的提取数据库数据的函数lib.js:
function getDB(myDB,magnitude) {
var pyx_stars = new Array();
const db = wx.cloud.database(); //在云函数里调用就是const db = cloud.database();
const fd = db.command;//微信小程序似乎不可以使用db.command
db.collection(myDB)
.where({
// _openid: wxContext.OPENID,
})
.get({
success: res => {
//console.log("res.data[0].pyxstars:",res.data[0].pyxstars)
for (var i = 0; i < res.data[0].pyxstars.length; i++) {
if (res.data[0].pyxstars[i].magnitude < magnitude) {
pyx_stars.push(JSON.parse(JSON.stringify(res.data[0].pyxstars[i])));
}
}
/* //这里没有必要向前台发送数据
this.setData({
pyx_stars: res.data[0].collectionName
}) */
},
fail: err => {
wx.showToast({
icon: 'none',
title: '查询记录失败'
})
console.error('[数据库] [查询记录] 失败:', err)
}
})
//终于出来数据了!!!!!可以把结果输出到调用者哪里的控制台
//console.log("pyx_mystars:", pyx_stars);
//所以我简单粗暴的return一下,结果成功了
return pyx_stars;
}
module.exports = {
//仅仅是pyxDB对外输出,函数名getDB在调用者哪里是不可见的
pyxDB: getDB
}
第二步
我的另一个微信小程序页面调用这个自定义的封装的函数(.js):
var pyx = require('../lib/lib.js');
//调用时传递两个参数:"myStars"是我的云服务器里的数据库名称,6是指恒星亮度小于6
myDB = pyx.pyxDB("myStars",6);
//成功的在调用时打印显示出了
console.log("数据库模块提取的亮度小于6的恒星:", myDB);
第三步
却无法使用这些数据,如图:
使用myDB[0]和myDB.0都不能有效操作数据 ,
新手可以借鉴我的代码,最起码成功的调用了数据库,而且还封装了调用数据库的函数,得到数据以后却无法直接操作数据(我要用这些数据绘制星空图)
希望高手能给指点