收藏
回答

困惑 环境指定!

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 需求 客户端 wx66dd28da5445fa01 2.2.5

在实际开发中,建议每一个正式环境都搭配一个测试环境,所有功能先在测试环境测试完毕后再上到正式环境


app.js

=============

wx.cloud.init({

env: "test-892d04",

traceUser:true,

})


传入字符串形式的环境 ID ,


云函数添加数据



// 云函数入口文件

const cloud = require('wx-server-sdk')


cloud.init()

const db = cloud.database()

// 云函数入口函数

exports.main = async (event, context) => {

return await db.collection('user').add({

data:{

user: event.name,

password: event.age,

regtime: db.serverDate()

}

})


}


const db = cloud.database()  获取默认环境的数据库,


现在的问题是 我想给test-892d04环境 下的user集合添加数据,结果会写入正式环境的user集合里!


我然后重新指定了环境,实现想要的效果

const cloud = require('wx-server-sdk')

cloud.init()

  const db = cloud.database({

env: 'test-892d04'

})


我想问测试环境的云函数如需要上传到正式环境里,那么每个云函数里的 cloud.database() 都要重新定义成正式环境的id


误区:


   我一开始以为app.js 里的wx.cloud.init 定义好后,云函数的cloud.init()就自动关联上了. 事实上操作测试环境的云函数,数据却写在正式环境里,

,那是不是app.js 里的wx.cloud.init 与 cloud.init() 根本就没关系,我这边的情况就是这样,确实不太明白wx.cloud.init 中定义的全局配置的意义

 何在,?小白一个请帮忙解答一下,谢谢



 自己也尝试搜索社区类似的问题,


      都是书面回答,迷迷糊糊的  如: api 层面指定环境的(谁知道api层面具体指那?)


       还有一个关系wx.cloud.init 传入对象写法分别指定各个服务的默认环境,之前的字符串写法没问题可以,写入数据


   

wx.cloud.init({

env: { database: "test-892d04"},

traceUser: true

})


databasestringdefault数据库 API 默认环境配置


最后报错了:

Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud function service error code -504001, error message Unkown function; at cloud.callFunction



其实最想解决的是:


1测试环境的云函数如需要上传到正式环境里,是不是每个云函数里的 cloud.database() 都要重新定义成正式环境的id,这样真的不科学!

2 wx.cloud.init 全局定义与云函数到底是什么关系?


   





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

6 个回答

  • nate
    nate
    2018-10-21

    我也遇到了这个问题,有没有什么方法可以获取到当前云函数是什么环境么?然后再动态的设置数据库的环境。

    我从小程序里面把env传到云函数里面了,这样就可以了。

    // 调用云函数

    wx.cloud.callFunction({

    name: 'login',

    data: { env: "dev-423fb1"},



    // 云函数入口文件

    const cloud = require('wx-server-sdk')

    // 云函数入口函数

    exports.main = async(event, context) => {

    cloud.init({

    env: event.env

    })


    2018-10-21
    赞同 1
    回复 1
    • 张帅
      张帅
      2018-12-12

      看了这么多,貌似也就你这个比较靠谱

      2018-12-12
      回复
  • 半寸灰
    半寸灰
    2018-10-09

    这个   env  对于小程序端是全局的  

    对于云函数    不管使用测试环境还是正常环境默认都是第一个  

    除非你指定

    每个云函数都要指定  

    不然比正式环境的云函数可能使用了  测试环境的   集合  哈哈哈哈

    2018-10-09
    赞同 1
    回复
  • Coande
    Coande
    2019-06-26

    巨坑,既然不同环境之间默认可以相互访问,不知道环境有什么用

    2019-06-26
    赞同
    回复
  • 张大师兄
    张大师兄
    2018-10-17

     我的wx.cloud为空,请问有人遇到过么

    2018-10-17
    赞同
    回复 3
    • Vagrant
      Vagrant
      2018-10-17

      照我的写不就完了

      2018-10-17
      回复
    • 张大师兄
      张大师兄
      2018-10-18回复Vagrant

      我自己解决了,你没看明白我的问题

      2018-10-18
      回复
    • Vagrant
      Vagrant
      2018-10-19回复张大师兄

      呵呵,确实没看明白

      2018-10-19
      回复
  • 富丽饼干
    富丽饼干
    2018-10-13

    我也遇到了这个问题,app.js里指定的环境只能切换云函数的环境,没法切换数据库,按官方文档说的每个环境都是相互独立,不明白为什么会这样

    2018-10-13
    赞同
    回复
  • Vagrant
    Vagrant
    2018-10-09

    谢谢!

    2018-10-09
    赞同
    回复
登录 后发表内容