问题描述
我在 discord 中有一个机器人游戏,所以我使用了“express”库来将机器人设置为在线(我猜)。首先要明确,我不是开发专家,只是一个在 YT 中学习观看教程的人。所以我创建了一个机器人游戏,但有时,我的机器人突然离线,我游戏中的用户丢失了游戏中的物品、现金和类似的东西。我注意到这就像数据库丢失了时间并从几分钟前回到数据库。有人知道这可能是什么吗?我该如何解决?
let money = await db.fetch(`money_${user.id}`)
let amount = 300
if(message.content === (`${PREFIX}daily`)) {
db.add(`money_${user.id}`,amount)
message.channel.send(`${username} received your daily reward ${amount} money!`)
}
PS:如果重要的话,我已经使用 Repl.it 来制作我的代码。 谢谢。
解决方法
如果您正在使用 heroku 或 repl.it 或其他类似的工具,他们倾向于每天擦除本地数据,您可以在您的情况下使用 mongodb 或 json 或切换您的主机
,使用 Repl.it 数据库进行持久化! https://docs.repl.it/tutorials/11-using-the-replit-database
,你可以试试QuickMongo。对于 quick.db
?
mongodb
测试
QuickMongo
const { Database } = require("quickmongo");
const db = new Database("mongodb://localhost/quickmongo");
db.once("ready",() => {
// Setting an object in the database:
db.set("userInfo",{ difficulty: "Easy" }).then(console.log);
// -> { difficulty: 'Easy' }
db.push("userInfo.items","Sword").then(console.log);
// -> { difficulty: 'Easy',items: ['Sword'] }
db.add("userInfo.balance",500).then(console.log);
// -> { difficulty: 'Easy',items: ['Sword'],balance: 500 }
// Repeating previous examples:
db.push("userInfo.items","Watch").then(console.log);
// -> { difficulty: 'Easy',items: ['Sword','Watch'],balance: 500 }
db.add("userInfo.balance",balance: 1000 }
// Fetching individual properties
db.get("userInfo.balance").then(console.log);
// -> 1000
db.get("userInfo.items").then(console.log);
// -> ['Sword','Watch']
})
QuickDB
const db = require('quick.db');
// Setting an object in the database:
db.set('userInfo',{ difficulty: 'Easy' })
// -> { difficulty: 'Easy' }
// Pushing an element to an array (that doesn't exist yet) in an object:
db.push('userInfo.items','Sword')
// -> { difficulty: 'Easy',items: ['Sword'] }
// Adding to a number (that doesn't exist yet) in an object:
db.add('userInfo.balance',500)
// -> { difficulty: 'Easy',balance: 500 }
// Repeating previous examples:
db.push('userInfo.items','Watch')
// -> { difficulty: 'Easy',balance: 500 }
db.add('userInfo.balance',balance: 1000 }
// Fetching individual properties
db.get('userInfo.balance') // -> 1000
db.get('userInfo.items') // ['Sword','Watch']
,
replit 会在一两天后自动删除 'quickdb' 文件,使用 'quickmongo' 更好更快