封装一个微信小程序获取数据库数据的函数

第一步
我在微信小程序里建立了一个文件夹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都不能有效操作数据,
使用myDB[0]和myDB.0都不能有效操作数据 ,
新手可以借鉴我的代码,最起码成功的调用了数据库,而且还封装了调用数据库的函数,得到数据以后却无法直接操作数据(我要用这些数据绘制星空图)
希望高手路过能给指点:为什么 使用myDB[0].ID或者myDB.0.ID 显示为undefined

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很抱歉,由于篇幅限制,无法在此处完整地提供微信小程序调用数据库的代码。不过,您可以通过以下步骤来实现: 1. 在微信公众平台上申请和配置小程序。 2. 搭建一个后台服务器,用于处理小程序的数据请求。 3. 在服务器端安装并配置数据库(如 MySQL)。 4. 编写后台代码,用于处理小程序的请求,从数据库中读取和写入数据。 5. 在小程序端使用 wx.request() 函数,向服务器发送请求,并处理服务器返回的数据。 请注意,实现一个完整的微信小程序需要一定的开发经验和技能,如果您不具备这方面的知识,建议您先学习相关的开发教程和文档。 ### 回答2: 微信小程序调用数据库的完整代码如下: 1. 在小程序的 app.json 文件中添加以下代码,用于配置云开发能力: ```json { "cloud": true, "pages": [ "pages/index/index", "pages/logs/logs" ] } ``` 2. 在小程序的 app.js 文件中引入云开发能力: ```javascript App({ onLaunch: function () { // 初始化云开发能力 wx.cloud.init({ env: 'your-env-id', // 替换成你的云开发环境 ID traceUser: true, // 是否要捕捉每个用户的访问记录 }) } }) ``` 3. 在需要调用数据库的页面中,例如 pages/index/index.js,编写以下代码: ```javascript const db = wx.cloud.database() // 获取数据库的引用 Page({ data: { todos: [] // 用于存储数据库中的数据 }, onLoad: function() { this.getDataFromDB(); }, getDataFromDB: function() { const that = this; // 调用数据库的集合(类似表)名称 const todosCollection = db.collection('todos'); // 获取数据库中的数据 todosCollection.get({ success: function(res) { that.setData({ todos: res.data }); }, fail: function(err) { console.error(err); } }); } }) ``` 在这个例子中,我们在页面加载时调用了 `getDataFromDB` 函数,该函数通过 `db.collection` 获取数据库中的集合,并使用 `get` 方法获取数据。在成功获取数据后,我们通过 `setData` 更新页面的数据,最终在页面中可以使用 `todos` 将数据渲染出来。 请替换代码中的 `your-env-id` 为你的云开发环境 ID,`todos` 为你自定义的集合名称。 ### 回答3: 微信小程序调用数据库的完整代码如下: 1. 在小程序根目录下创建一个 `utils` 文件夹,并在该文件夹下创建 `db.js` 文件,用于封装数据库操作的方法。 ```javascript // db.js const db = wx.cloud.database() // 初始化云数据库 // 查询数据 function getData(collection, filter = {}) { return db.collection(collection).where(filter).get() } // 插入数据 function insertData(collection, data) { return db.collection(collection).add({ data: data }) } // 更新数据 function updateData(collection, docId, data) { return db.collection(collection).doc(docId).update({ data: data }) } // 删除数据 function deleteData(collection, docId) { return db.collection(collection).doc(docId).remove() } // 导出方法 module.exports = { getData: getData, insertData: insertData, updateData: updateData, deleteData: deleteData } ``` 2. 在需要使用数据库的页面中引入 `db.js` 文件,并调用相应的方法进行数据库操作。 ```javascript // pages/index/index.js const db = require('../../utils/db.js') Page({ getData: function() { db.getData('collectionName', { key: value }).then(res => { console.log(res) }).catch(err => { console.error(err) }) }, insertData: function() { const data = { key1: value1, key2: value2, // ... } db.insertData('collectionName', data).then(res => { console.log(res) }).catch(err => { console.error(err) }) }, updateData: function() { const data = { key1: value1, key2: value2, // ... } db.updateData('collectionName', docId, data).then(res => { console.log(res) }).catch(err => { console.error(err) }) }, deleteData: function() { db.deleteData('collectionName', docId).then(res => { console.log(res) }).catch(err => { console.error(err) }) } }) ``` 以上就是一个简单的微信小程序调用数据库的完整代码,其中 `collectionName` 是集合名称,`key` 和 `value` 是查询条件的字段和值,`docId` 是需要操作的文档的 ID。根据实际需求,可以在 `data` 中添加更多的字段和值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值