如何使用云数据库持久保存用户的数据(补充)

简介: 这篇文章是针对于之前写的一篇付费文章《如何在小游戏制作工具中使用云数据库持久保存用于的数据》的补充。

这篇文章是针对于之前写的一篇付费文章《如何在小游戏制作工具中使用云数据库持久保存用于的数据》的补充。


付费文章是不允许复制和黏贴的,这个我是后来才知道的。所以,文中的代码无法进行复制,只能手动进行输入。


另外还有一点儿就是文章中关于配置的部分遗漏了,导致了不少朋友跟我反应明明是照着教程做的,但是却报错了。


所以,这篇补充文章主要是解决上述的这两个问题的。


以下,为教程中使用到的三段代码。


login云函数代码:

const cloud = require('wx-server-sdk')
const request = require('request')
// 初始化 cloud
cloud.init({
    // API 调用都保持和云函数当前所在环境一致
    env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event, context) => {
    var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=APP_ID&secret=APP_SEECRET&js_code=' + event.queryStringParameters.code + '&grant_type=authorization_code';
    return new Promise((resolve, reject) => {
        request(url, function (error, response, body) {
            if (response && response.statusCode === 200) {
                resolve(body);
            } else {
                 reject(error);
            }
        });
    });
}

uploadData云函数代码:

// 云函数入口文件
const cloud = require('wx-server-sdk');
// 与小程序端一致,均需调用 init 方法初始化
cloud.init({
  // API 调用都保持和云函数当前所在环境一致
  env: cloud.DYNAMIC_CURRENT_ENV
})
// 可在入口函数外缓存 db 对象
const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
  // 拿到用户的id以及需要存储的得分数据
  const docId = event.queryStringParameters.openid;
  const score = event.queryStringParameters.score;
  const level = event.queryStringParameters.level;
  const coin = event.queryStringParameters.coin;
  const challangeday = event.queryStringParameters.challangeday;
  const flowerlevel = event.queryStringParameters.flowerlevel;
  const flowertimes = event.queryStringParameters.flowertimes;
  //拿到执行的集合playerdata
  const dataCol = db.collection("playerdata");
  let userRecord;
  //查询当前集合中是否已有该用户的记录
  try {
    const queryResult = await dataCol.doc(docId).get();
    userRecord = queryResult.data;
  } catch (err) {
    // 用户第一次上传分数
    console.log("没当前用户的分数记录,用户第一次上传分数")
  }
  //如果有用户记录,进行更新
  if (userRecord) {
    //更新用户数据
    const updateResult = await dataCol.doc(docId).update({
      data: {
        score: score,
        level: level,
        coin: coin,
        challangeday: challangeday,
        flowerlevel: flowerlevel,
        flowertimes: flowertimes
      }
    });
    if (updateResult.stats.updated === 0) {
      // 没有更新成功,更新数为 0
      return {
        success: 0,
      }
    }
    return {
      success: 1,
    }
  } else {
    // 如果没有用户记录,则创建新的用户记录
    await dataCol.add({
      // data 是将要被插入到 score 集合的 JSON 对象
      data: {
        // 这里指定了 _id,如果不指定,数据库会默认生成一个
        _id: docId,
        score: score,
        level: level,
        coin: coin,
        challangeday: challangeday,
        flowerlevel: flowerlevel,
        flowertimes: flowertimes
      }
    })
    return {
      success: 1,
    }
  }
}

searchData云函数代码:

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
    // API 调用都保持和云函数当前所在环境一致
    env: cloud.DYNAMIC_CURRENT_ENV
})
// 可在入口函数外缓存 db 对象
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
    // 使用用户的openid作为id
    const docId = event.queryStringParameters.openid;
    console.log("openid:", docId);
    const dataCol = db.collection("playerdata");
    let userRecord;
    try {
        const queryResult = await dataCol.doc(docId).get()
        userRecord = queryResult.data
    } catch (err) {
        console.log("没当前用户的分数记录")
        return{
            success:0,
        }
    }
    //如果有用户记录,增进行更新
    if (userRecord) {
        console.log("找到用户记录");
        return {
            success:1,
            data:userRecord,
        }
    } else {
        console.log("没有用户记录");
        return {
            success: 0,
        }
    }
}

*注:以上所有云函数代码均为我的游戏“精致1010”中所使用的代码,你需要根据自己游戏的具体情况做出一些对应的修改。


下方是关于云函数的配置。


第一步,找到“package.json”文件,增加微信sdk(wx-server-sdk)的依赖。很多朋友最后运行报错,都是因为没有增加微信sdk的依赖。

640.png


第二步,点击下方的“保存并安装依赖”按钮,后台会自动的安装所需的依赖。安装完成后在目录中会看到一个“node_modules”的文件夹。

640.png


最后,如果你的云函数中没有“package.json”文件的话,可以新建一个,然后把下方的配置代码黏贴进去。

{
  "name": "login",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "wx-server-sdk": "~2.5.3"
  }
}

先前的关于云存储的付费文章只以 1 元的价格出售,现在想想简直是太超值了。我使用了整整 2 天的时间去研究云函数,云存储,去试验尝试,最终整理成教程。购买文章的朋友相当于以 1 元钱的价格购买了我两天的时间,另外,更重要的是为自己省下了两天或者更多摸索的时间。


想一想这 1 块钱是不是真的很超值。只要有人使用微信小游戏制作工具,只要涉及到云存储,那么终究绕不过这篇文章。


不过,即然已经如此定价了,就全当交个朋友了。如果你还没有关注我的公众号的话,那么赶紧的点击下方去关注一下吧!

相关文章
|
10天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
2月前
|
关系型数据库 MySQL 数据库
ORM对mysql数据库中数据进行操作报错解决
ORM对mysql数据库中数据进行操作报错解决
82 2
|
12天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
48 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
9天前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
17天前
|
人工智能 Cloud Native 容灾
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
|
25天前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
79 3
|
2月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
2月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
1月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
1月前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
157 4

热门文章

最新文章

下一篇
无影云桌面