Tengo una página de perfil de Wix personalizada (hecha con Velo) que muestra la información del usuario. Para obtener esa información, tengo que consultar una base de datos, y para consultar esa base de datos, tengo que obtener la dirección de correo electrónico de inicio de sesión del usuario actualmente conectado. Afortunadamente, Wix tiene una API para eso, currentMember. Sin embargo, el uso de currentMember.getMember() está devolviendo indefinido en la página de perfil. Pero después de volver a cargar la página de perfil, devuelve un objeto con los datos de miembro correctos (incluido el correo electrónico que necesito). ¿Por qué está pasando esto? Otra cosa que noté es que recibo el siguiente error en la consola:
Estaba pensando que, dado que el error decía que la URL estaba precargada, tal vez la página se cargó antes de iniciar sesión y, por lo tanto, el objeto miembro que se devuelve no está definido, ya que el usuario aún no había iniciado sesión.
Aquí está el código que usé para registrar el objeto miembro en la consola:
import { currentMember } from 'wix-members'; $w.onReady(function () { currentMember.getMember() .then((member) => { console.log(member); }); }Y esto estaba registrando indefinido, pero cuando recargo, da la información correcta.
Tuve un problema similar por el cual un miembro inicia sesión, pero el objeto de miembro devuelto no estaba disponible hasta que se actualizó la página.
Resolví esto con el uso de la API "wix-members" onLogin() . A continuación se muestra el código que pirateé juntos.
authentication.onLogin((memberInfo) => { const memberId = memberInfo.id; if (memberId) { console.log("MEMBER ID: " + memberId); local.setItem("auth", memberId); } else { currentMember.getMember() .then((member) => { if (member) { console.log("MEMBER ID: " + member._id); local.setItem("auth", member._id); } else { console.log("NOT LOGGED IN!"); } }) .catch((error) => { console.error(error); }); } });Tuve que usar un if / else ya que la propiedad memberInfo.id siempre aparece sin definir. Lo dejé en el código (para mi caso de uso) en caso de que comience a funcionar como se esperaba nuevamente.
Usé esto en masterPage.js onReady().