收藏
回答

云数据库初始化如何统一封装?

目前是每个页面的js都加了const db = wx.cloud.database(),上线时修改数据库需要改动多个文件,有什么方法吗

回答关注问题邀请回答
收藏

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-06-12
    // 数据库配置
    //utils/dbConfig.js
    module.exports = {
        env: '环境ID'//...
    }
    


    1、db挂载到App上 , 页面里可以使用getApp().db,或者 看第2个方法

    App({
      onLaunch: function () {
            // 可以在这里读取数据公共配置,如envId等等
    	// var config = require('./utils/dbConfig.js')
    	wx.cloud.init(
    	 //{ env: config.env }
    	)
    	this.db = wx.cloud.database(
    	 //{ env: config.env }
    	)
      }
    })
    Page({
      onLoad: function (options) {
            console.log(getApp().db)
      }
    }
    


    2、重写page,在app.js引入utils/page.js,在page页面设置useDB为true

    Page = require('./utils/page.js')
    App({
      onLaunchfunction () {
    
      }
    })
    


    // utils/page.js
    const myPage = Page
    
    module.exports = function (e{
      let {
        useDB,
        onLoad
      } = e
      e.onLoad = ((useDB, onLoad) => {
        return function (res) {
          if(useDB == true){
                  // 可以在这里读取数据公共配置,如envId等等
                  // var config = require('./dbConfig.js')
                  wx.cloud.init(
                     //{ env: config.env }
                  )
                  this.db = wx.cloud.database(
                     //{ env: config.env }
                  )
            }
          onLoad && onLoad.call(this, res)
        }
      })(useDB, onLoad)
      return myPage.call(this, e)
    }
    
    

    

    在page页面设置useDB为true,就可以直接使用 this.db了

    // pages/index/index.js
    Page({
        useDB: true,
      onLoadfunction (options{
            console.log(this.db)
      }
    }
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-06-12
    有用 3
    回复
  • Seaton
    Seaton
    2020-06-13

    谢谢

    2020-06-13
    有用
    回复
登录 后发表内容
问题标签