收藏
回答

请问一下大佬uniCloud.getWXContext is not a function怎么解决?

'use strict';

const db = uniCloud.database();
const usersCollection = db.collection('tq_users');


exports.main = async (event, context) => {
	console.log(event);
	const {
		code,
		userInfo
	} = event;


	try {
		const wxContext = uniCloud.getWXContext(); 
		const openid = wxContext.OPENID;
		const unionid = wxContext.UNIONID;


		if (!openid) {
			return {
				code: 500,
				message: '获取 openid 失败'
			};
		}


		 //查询用户是否已存在
		const queryRes = await usersCollection.where({
			openid
		}).get();


		let userData = {
			openid,
			unionid: unionid || '',
			nickName: userInfo.nickName,
			avatarUrl: userInfo.avatarUrl,
			gender: userInfo.gender,
			city: userInfo.city,
			province: userInfo.province,
			country: userInfo.country,
			lastLoginTime: Date.now(),
			createTime: queryRes.data.length === 0 ? Date.now() : queryRes.data[0].createTime
		};


		// 用户不存在则创建,存在则更新
		if (queryRes.data.length === 0) {
			userData.createTime = Date.now();
			const addRes = await usersCollection.add(userData);
			userData._id = addRes.id;
		} else {
			const userId = queryRes.data[0]._id;
			await usersCollection.doc(userId).update(userData);
			userData._id = userId;
		}


		return {
			code: 200,
			message: '登录成功',
			data: {
				userInfo: userData
			}
		};


	} catch (error) {
		console.error('登录错误:', error);
		return {
			code: 500,
			message: '服务器错误: ' + error.message
		};
	}
};

以上是我的云函数代码,已经检查过appid和appsecret都没有问题,页面端code也是能获取到的,运行是在微信开发者工具中
回答关注问题邀请回答
收藏

2 个回答

  • Will
    Will
    2025-04-11

    我也遇到这个问题:

    'use strict';

    const db = uniCloud.database();

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

      const { code, userInfo } = event;


      // 调用微信 API 获取 openid 和 session_key

      const wxRes = await uniCloud.getWXContext();

      const { openid } = wxRes;


      // 查询用户是否已注册

      const userCollection = db.collection('users');

      const user = await userCollection.where({

        openid: openid

      }).get();


      if (user.data.length === 0) {

        // 用户未注册,进行注册

        await userCollection.add({

          openid: openid,

          ...userInfo,

          createTime: Date.now()

        });

        return {

          code: 0,

          message: '注册成功'

        };

      } else {

        // 用户已注册

        return {

          code: 0,

          message: '登录成功'

        };

      }

    };

    "@dcloudio/uni-cloud": "^3.0.0-4050720250324001",



    不知道为什么还会出现这个问题,是不是unicloud的api的问题




    2025-04-11
    有用
    回复
  • 智能回答 智能回答 该问答由AI生成
    2025-04-10
    有用
登录 后发表内容