メインコンテンツまでスキップ
バージョン: v2.0

Database

このクラスは、データベースを操作するためのメソッドを提供します。MongoDB と SQLite の両方をサポートし、ユーザーおよびレベルロールのドキュメントを作成、更新、削除、検索できます。レコードの作成または更新時には、createdAtlastUpdated のタイムスタンプが設定されます。

Methods

Database.getCollection()

データベースからコレクションを返します。

注意

この関数は MongoDB データベースでのみ使用できます。

パラメーター

ParameterTypeRequiredDescription
collectionstring取得するコレクション名。

戻り値 Collection - MongoDB コレクション


Database.createOne()

注意

ここでは query のプロパティを すべて 指定する必要があります。

データベースに新しいドキュメントを作成します。このメソッドは createdAtlastUpdated の ISO タイムスタンプを自動で追加します。data オブジェクトの多くのフィールド (nameuserlevelxpflags など。simply-xps の場合) は任意です。MongoDB と SQLite の両方をサポートします。

パラメーター

ParameterTypeRequiredDescription
queryUserOptions LevelRoleOptionsユーザーまたはレベルロール用オプション。

戻り値 Promise<UserResult | LevelRoleResult> - User または LevelRole


Database.deleteMany()

複数のドキュメントを削除します。基盤ドライバーが結果オブジェクトを返した場合に true を返します。SQLite では run() の結果が成功時に truthy として扱われます。

パラメーター

ParameterTypeRequiredDescription
queryUserOptions LevelRoleOptionsユーザーまたはレベルロール用オプション。

戻り値 Promise<boolean> - ドキュメントが削除された場合は true、それ以外は false


Database.deleteOne()

単一のドキュメントを削除します。

パラメーター

ParameterTypeRequiredDescription
queryUserOptions LevelRoleOptionsユーザーまたはレベルロール用オプション。

戻り値 Promise<boolean> - ドキュメントが削除された場合は true、それ以外は false


Database.findOne()

データベースから 1 件のドキュメントを検索します。

パラメーター

ParameterTypeRequiredDescription
queryUserOptions LevelRoleOptionsユーザーまたはレベルロール用オプション。

戻り値 Promise<UserResult | LevelRoleResult> - User または LevelRole


Database.find()

指定したギルドのドキュメントを検索します。SQLite では simply-xpsflags カラムは JSON から配列に再変換されます。collection パラメーターには simply-xps または simply-xp-levelroles を指定する必要があります。

パラメーター

ParameterTypeRequiredDescription
collectionsimply-xps
simply-xp-levelroles
取得するコレクション名。
guildstringギルド ID。
limitnumber返却する最大ドキュメント数。

戻り値 Promise< UserResult[] | LevelRoleResult[] > - User または LevelRole


Database.findAll()

すべてのドキュメントを検索します。

パラメーター

ParameterTypeRequiredDescription
collectionsimply-xps
simply-xp-levelroles
取得するコレクション名。
limitnumber返却する最大ドキュメント数。

戻り値 Promise< UserResult[] | LevelRoleResult[] > - User または LevelRole


Database.findGlobalLeaderboard()

すべてのギルドを横断したグローバルリーダーボードを取得し、ユーザーごとに 1 行だけを残します。各ユーザーについて、XP が最も高いギルドの行が採用されます(同点の場合は最終更新日時、次に作成日時が新しい方が優先されます)。guildId を指定せずに leaderboard() を呼び出した際に内部で使用されます。

パラメーター

ParameterTypeRequiredDescription
limitnumber返却する最大ユーザー数。

戻り値 Promise< UserResult[] > - XP の降順で並んだ、ユーザーごとに 1 行の結果。


Database.updateOne()

データベース内のドキュメントを更新します。

パラメーター

ParameterTypeRequiredDescription
filterUserOptions LevelRoleOptionsユーザーまたはレベルロール用オプション。
updateUserOptions LevelRoleOptionsドキュメントに適用する更新内容。
options{ upsert?: boolean }MongoDB の upsert オプション。

戻り値 Promise<UserResult | LevelRoleResult> - User または LevelRole


Database.namespace()

プラグイン専用のキー/値ストアを返します。これにより、プラグインは xp.database や simply-xp のテーブルを直接操作することなく、独自のデータを保存できます。

MongoDB と SQLite の両方で動作します。ストレージは最初の書き込み時に遅延作成されるため、何も保存しないプラグインはデータベースに一切影響しません。

パラメーター

ParameterTypeRequiredDescription
namestring名前空間。通常はプラグインのパッケージ名。

戻り値 PluginStore

メソッド戻り値説明
get(key)Promise<T | null>値を読み取ります。未設定の場合は null
set(key, value)Promise<void>値を書き込みます。JSON 化できる値であれば何でも可。
delete(key)Promise<boolean>キーを削除し、存在したかどうかを返します。
keys()Promise<string[]>この名前空間のすべてのキーを列挙します。
clear()Promise<number>この名前空間のすべてのキーを削除し、その件数を返します。

例外

  • XpFatal - 名前が指定されていない場合、またはデータベース接続がない場合。

const { Database } = require("simply-xp");

const store = Database.namespace("simply-xp-rate-limits");

await store.set(`cooldown:${userId}`, { until: Date.now() + 60_000 });

const cooldown = await store.get(`cooldown:${userId}`);
if (cooldown && cooldown.until > Date.now()) return; // まだクールダウン中
ヒント

名前空間は互いに分離されているため、2 つのプラグインが同じキー名を安全に使用できます。


Database.countUsersWithMoreXp()

指定した値より厳密に多くの XP を持つギルド内のユーザー数を数えます。fetch()rankCard() が、ギルド全体をメモリに読み込まずにユーザーのリーダーボード順位を計算するために内部で使用します。

パラメーター

ParameterTypeRequiredDescription
guildIdstringギルド ID。
xpValuenumberこの値より多い XP を持つユーザーを数えます。

戻り値 Promise<number> - より多くの XP を持つユーザー数。