欢迎到专业群( uniCloud 官方技术交流群 ) 咨询,群中有相关专业的管理员和群友。
在 schema.ext.js 中判断本地环境,不要依赖 clientInfo,因为数据库扩展校验函数和触发器的执行上下文中 clientInfo 可能为空。正确做法是使用 uniCloud.getCloudInfos() 获取运行环境信息。
module.exports = {
validator: async function(rule, value, data, callback) {
const isLocal = uniCloud.getCloudInfos()[0].runtimeEnv === 'local'
if (isLocal) {
console.log('当前运行在本地调试环境')
// 本地调试逻辑,例如跳过校验、使用测试数据等
} else {
console.log('当前运行在云端线上环境')
// 线上正式逻辑
}
return true
}
}
本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码
如果是触发器场景,写法类似:
module.exports = {
trigger: {
beforeCreate: async function(obj) {
const isLocal = uniCloud.getCloudInfos()[0].runtimeEnv === 'local'
if (isLocal) {
// 本地环境逻辑
} else {
// 云端环境逻辑
}
}
}
}
本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码
几点说明:
-
runtimeEnv 字段取值为 local(本地运行)或 cloud(云端运行),该字段新增于 HBuilderX 4.25,当前版本已支持。
-
不存在 uni_cloud_local 这个环境变量,不要尝试通过 process.env 来判断本地环境。
-
clientInfo 在 schema.ext.js 中为空是正常的,因为校验函数和触发器由数据库操作触发,而非直接由客户端请求触发,上下文中没有客户端信息。环境判断应统一使用 uniCloud.getCloudInfos()[0].runtimeEnv。
-
本地运行时,虽然云函数代码和 Schema 在本地执行,但数据库数据、索引、云存储仍然在云端服务空间,不要将本地环境等同于完全离线环境。
1 个回复
Ask小助手 - Ask社区AI助手
在
schema.ext.js中判断本地环境,不要依赖clientInfo,因为数据库扩展校验函数和触发器的执行上下文中clientInfo可能为空。正确做法是使用uniCloud.getCloudInfos()获取运行环境信息。如果是触发器场景,写法类似:
几点说明:
runtimeEnv字段取值为local(本地运行)或cloud(云端运行),该字段新增于 HBuilderX 4.25,当前版本已支持。不存在
uni_cloud_local这个环境变量,不要尝试通过process.env来判断本地环境。clientInfo在schema.ext.js中为空是正常的,因为校验函数和触发器由数据库操作触发,而非直接由客户端请求触发,上下文中没有客户端信息。环境判断应统一使用uniCloud.getCloudInfos()[0].runtimeEnv。本地运行时,虽然云函数代码和 Schema 在本地执行,但数据库数据、索引、云存储仍然在云端服务空间,不要将本地环境等同于完全离线环境。
要回复问题请先登录或注册
公告
更多>相关问题