更换开放平台后,unionid会改变;但是好的业务架构,可以不受unionid的变更的影响,取决于你怎么理解和使用unionid。
一、unionid应该仅用于关联,即:
假如
老unionid=unionidOld,
新unionid=unionidNew
//通过老unionid关联
if(user1.unionidOld==user2.unionidOld) user1.openid2=user2.openid //user1通过老unionid关联上了user2,是同一人
//user1.openid2可以永久保存在user1的记录中,永久绑定了,你unionid再怎么改,都不会影响了。
//同样,通过新unionid关联
if(user1.unionidNew==user2.unionidNew) user1.openid2=user2.openid //user1通过新unionid关联上了user2,是同一人
可见,更换开放平台完全不影响业务逻辑,甚至老unionid和新unionid可以在数据库中并存,没有任何影响。
二、如果你的表设计成:
{
_id:unionid,
_openid:openid,
nickName:'xxx'
}
那么恭喜你,你想更换开放平台就太难了。。。
似乎没有说到公众号和小程序,各只有一边的openid和旧的unionid的情况。就是说原来我是小程序登的,我没有登过公众号,这个情况下没有公众号的openid,只有小程序的openid,换平台后我是先进公众号,这时只能取得新的unionid和公众号的openid,这两个都跟旧的关联不上,但它确实是旧的小程序用户,怎么处理呢?现在知道的只能新增一个用户,等哪天它用回小程序登时才能关联合并数据处理。不知有没更好方案。