如何在Firestore数据库字段中存储排名区间数据用于游戏玩家奖品分发
Firestore排名奖励区间数据存储方案
存储结构设计
你可以在Firestore中创建专门的配置集合存储奖励规则,无需拆分多个文档,后续读取规则时仅需一次查询即可获取全量区间配置:
- 集合名:
reward_configs(用于存放所有全局业务配置) - 文档ID:固定为
rank_rewards(手动指定,方便直接读取无需额外查询) - 文档内字段结构如下:
{ // 奖励规则数组,每个元素对应一个排名区间的奖励配置 "rank_reward_rules": [ { "min_rank": 1, "max_rank": 200, "coin_reward": 5000 }, { "min_rank": 201, "max_rank": 400, "coin_reward": 2500 }, { "min_rank": 401, "max_rank": 500, "coin_reward": 1000 } ], // 可选字段,记录配置最后更新时间,方便后续追溯规则变更 "update_time": "2024-xx-xxTxx:xx:xxZ" }
控制台手动添加步骤
如果你直接在Firebase控制台操作,可以按照以下流程添加:
- 进入Firebase控制台对应项目的Firestore数据库页面
- 点击「开始集合」,输入集合ID
reward_configs后点击下一步 - 文档ID处不要选自动生成,手动输入
rank_rewards - 新增第一个字段:字段名填
rank_reward_rules,类型选择「数组」 - 点击数组内的「添加值」,值类型选择「映射」,在映射内依次添加三个字段:
min_rank,类型为数字,值填1max_rank,类型为数字,值填200coin_reward,类型为数字,值填5000
- 重复第5步,依次添加剩下两个区间的映射配置即可
- 可选添加
update_time字段,类型选择时间戳,最后保存文档
代码写入示例(Web SDK)
如果要通过代码写入配置,可参考以下示例:
import { doc, setDoc } from "firebase/firestore"; import { db } from "./firebase-init"; // 替换为你自己的Firebase初始化文件路径 const saveRankRewardConfig = async () => { const configDocRef = doc(db, "reward_configs", "rank_rewards"); await setDoc(configDocRef, { rank_reward_rules: [ { min_rank: 1, max_rank: 200, coin_reward: 5000 }, { min_rank: 201, max_rank: 400, coin_reward: 2500 }, { min_rank: 401, max_rank: 500, coin_reward: 1000 } ], update_time: new Date() }); };
内容的提问来源于stack exchange,提问作者Kumar Harsh
相关产品推荐
相关产品推荐

