Tengo una función que devuelve el prefijo de los gremios en Discord.JS:
obtenerprefijo.js:
const GuildSchema = require("../Database/Models/GuildConfigs"); const { DEFAULT } = require("./config"); const getprefix = async (id) => { const guildConfigs = await GuildSchema.findOne({ GuildID: id, }); let PREFIX = DEFAULT; if (guildConfigs && guildConfigs?.Prefix) { PREFIX = guildConfigs?.Prefix; } }; module.exports = { getprefix };Llamo a la función en otro archivo usando esto:
let prefix = getprefix(message.guild.id); prefix.then(() => { console.log(prefix); });El problema es que devuelve esto en la consola:
Promise { '!' }¿Es posible simplemente devolver el prefijo real que está dentro de las comillas sin la Promesa?
Sí, pero debe devolver el valor de la función asíncrona.
obtenerprefijo.js:
const GuildSchema = require("../Database/Models/GuildConfigs"); const { DEFAULT } = require("./config"); const getprefix = async (id) => { const guildConfigs = await GuildSchema.findOne({ GuildID: id, }); let PREFIX = DEFAULT; if (guildConfigs && guildConfigs?.Prefix) { PREFIX = guildConfigs?.Prefix; } return PREFIX; }; module.exports = { getprefix };y cambiar la llamada:
let prefix = getprefix(message.guild.id); prefix.then((value) => { console.log(value); });Primero debe devolver un valor de su función asíncrona llamada getprefix . En segundo lugar, debe console.log el resultado de la promesa devuelta por la función getprefix en lugar de la promesa en sí:
const getprefix = async (id) => { const guildConfigs = await GuildSchema.findOne({GuildID: id}); if (!guildConfigs || !guildConfigs.Prefix) { return DEFAULT; } return guildConfigs.Prefix; }; getprefix(message.guild.id).then(prefix => console.log(prefix));