猫有猫的方向 2024-05-27 20:39 采纳率: 88.2%
浏览 3
已结题

微信开发者工具/云函数/数据库

前端正常请求昵称跟头像到微信开发者工具--云开发,存到数据库只有id,没有其它参数!不知道原因!

img

img

img

img

img

img

img

  • 写回答

13条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-05-27 20:42
    关注

    🕗晚上好,题主!目前:🟢[在线]
    📢参考通义千问、由郭老师整理提供!
    📣今日诗号:愿我如星君如月,夜夜流光相皎洁。

    微信小程序云函数获取用户信息并存储到数据库的问题

    您遇到的问题是,使用微信小程序云函数获取用户信息,并尝试将其存储到数据库时,只有 openid 被成功存储,而昵称和头像等其他参数丢失。这通常是由于以下原因导致的:

    1. 未在云函数中正确获取用户信息: 确保在云函数中使用了 wx.cloud.callFunction 调用 wx.getUserProfile 接口获取用户信息,而不是直接使用 wx.getUserInfo

    2. 未正确传递用户信息到数据库: 确保将获取到的用户信息完整地传递给数据库插入操作。

    3. 数据库权限问题: 确保云函数拥有访问和写入数据库的权限。

    解决方案和完整代码

    以下是获取用户信息并存储到数据库的完整代码示例,包含前端和云函数部分:

    前端代码 (例如 pages/index/index.js):

    Page({
      getUserInfo() {
        wx.getUserProfile({
          desc: '用于完善会员资料', // 声明获取用户个人信息后的用途
          success: (res) => {
            const userInfo = res.userInfo
            wx.cloud.callFunction({
              name: 'saveUserInfo',
              data: {
                userInfo: userInfo,
              },
              success: (res) => {
                console.log('用户信息存储成功:', res)
              },
              fail: (err) => {
                console.error('用户信息存储失败:', err)
              },
            })
          },
          fail: (err) => {
            console.error('获取用户信息失败:', err)
          },
        })
      },
    })
    

    云函数代码 (例如 cloudfunctions/saveUserInfo/index.js):

    const cloud = require('wx-server-sdk')
    cloud.init()
    const db = cloud.database()
    
    exports.main = async (event, context) => {
      try {
        const userInfo = event.userInfo
        const result = await db.collection('users').add({
          data: {
            // ...userInfo, // 可以直接展开 userInfo 对象
            nickName: userInfo.nickName,
            avatarUrl: userInfo.avatarUrl,
            gender: userInfo.gender,
            // ... 其他用户信息
            createdAt: db.serverDate(),
            updatedAt: db.serverDate(),
          },
        })
        return {
          success: true,
          _id: result._id,
        }
      } catch (error) {
        console.error('用户信息存储失败:', error)
        return {
          success: false,
          error: error,
        }
      }
    }
    

    代码解释:

    1. 前端代码:
      • 使用 wx.getUserProfile 获取用户信息。
      • 通过 wx.cloud.callFunction 调用名为 saveUserInfo 的云函数。
      • 将获取到的 userInfo 传递给云函数。
    2. 云函数代码:
      • event 对象中获取前端传递的 userInfo
      • 使用 db.collection('users').add 将用户信息插入到名为 users 的数据库集合中。
      • 返回操作结果,包括成功标志和插入记录的 _id

    注意事项:

    • 确保在云开发控制台开启了数据库权限,并为云函数配置了相应的访问权限。
    • 以上代码示例仅供参考,您可以根据实际需求进行修改和扩展。

    希望以上解决方案和代码能够帮助您解决问题! 如果您还有其他疑问,请随时提出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(12条)

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 创建了问题 5月27日

悬赏问题

  • ¥15 Unity 2022.3.34版本安卓打包apk失败,gradle配置问题,用的是mono2x
  • ¥15 R语言中安装bibliometrix 后运行biblioshiny出现问题
  • ¥20 关于#android#的问题:用开发助手发现找不到控件(autojs)
  • ¥15 dir815漏洞反弹shell失败
  • ¥15 支付宝小程序云函数登录获取user_id失败
  • ¥50 python for 循环速度慢
  • ¥15 CubeMX生成的代码用keil编译有报错
  • ¥15 Stata链式中介效应代码修改
  • ¥15 pip安装PyAV报错
  • ¥15 latex投稿显示click download