各位官方技术大佬、专家好:
我们团队目前正在进行小程序数据库重构,计划使用 UnionID 作为用户表的主键(_id)。为了保证架构的安全性,需要向官方确认一个核心机制的稳定性。
【当前环境配置】
- 开发模式:纯原生小程序 + 微信云开发(Cloud Functions)。
- 绑定状态:该小程序 AppID 已经绑定在了微信开放平台(Open Platform)账号下。
- 调用方式:由用户在小程序端触发云函数(例如在
app.onLaunch或page.onLoad中调用wx.cloud.callFunction)。
【核心疑问】
在上述条件下,在云函数代码中执行 const { UNIONID } = cloud.getWXContext():
问题 1: 此时获取到的 UNIONID 是否 100% 保证有值?
问题 2(关键): 网上有一种说法称:“用户必须在同一开放平台下的至少两个应用(如小程序+公众号,或小程序+App)都登录过,才会生成 UnionID,否则只用小程序是拿不到的。”
请问在云开发环境下,这种说法是否正确?
(我们的场景是:用户仅使用该小程序,从未关注过同主体的公众号或下载过App,这种单应用场景下,云函数是否依然能拿到 UnionID?)
【背景】
我们担心如果 UnionID 在单应用场景下可能为空,将其设为主键会导致新用户注册失败。恳请官方给予明确答复,非常感谢!

如果是从小程序端发起的调用(wx.cloud.callFunction),可以拿到unionid,但如果云函数要提供http的调用方式则获取不到
1、计划使用 UnionID 作为用户表的主键。
错误的计划,建议改成openid;
2、只要绑定了开放平台,就一定拿到unionid。