Потеря данных из Quick.db в моем боте Discord

#javascript #express #discord.js #repl.it #quick.db

#javascript #выражать #discord.js #repl.it #quick.db

Вопрос:

У меня есть бот-игра в Discord, поэтому я использовал библиотеку ‘express’, чтобы настроить бота онлайн (я думаю). Прежде всего, чтобы внести ясность, я не профессионал в области разработки, а всего лишь человек, который научился смотреть учебные пособия в YT. Итак, я создал игру-бота, но иногда мой бот внезапно отключается, и пользователи из моей игры теряют предметы, деньги и тому подобное в игре. Я заметил, что это похоже на то, что база данных потеряла время и вернулась к базе данных несколько минут назад. Кто-нибудь знает, что могло бы это сделать? И как я могу это исправить?

Простой пример командного кода, который я использовал для создания своей базы данных с помощью quick.db

 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 чтобы создавать свои коды, если это имеет значение.
Спасибо.

Комментарии:

1. Да, проблема в том, что вы размещаете на repl.it — по истечении времени ожидания он, вероятно, очищает базу данных — если вы хотите продолжать использовать repl.it чтобы разместить бота, вам придется поискать другую платформу для размещения базы данных, например Firestore, или переместить бота на другой хост


Ответ №1:

Если вы используете heroku или repl.it или другие подобные им, они, как правило, ежедневно стирают локальные данные. вы можете использовать mongodb или json в вашем случае или переключить свой хост

Ответ №2:

Ответ №3:

вы можете попробовать 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", 500).then(console.log);
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], 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', items: ['Sword'], balance: 500 }

// Repeating previous examples:
db.push('userInfo.items', 'Watch')
// -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 500 }
db.add('userInfo.balance', 500)
// -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 1000 }

// Fetching individual properties
db.get('userInfo.balance') // -> 1000
db.get('userInfo.items') // ['Sword', 'Watch']
 

Ответ №4:

replit автоматически удаляет файлы ‘quickdb’ через день или два используйте ‘quickmongo’ лучше и быстрее