Hola cómo estás ? Soy nuevo en javascript y necesito ayuda con una pregunta. Estoy tratando de enviar datos del miembro conectado actual y redirigir un dominio diferente a través de un botón en la creación del sitio web www.wix.com . Los datos son estado, nombre completo, email y dni. El lenguaje utilizado es javascript. Me gustaria saber que hago para poder enviar estos datos juntos en la url y que estoy haciendo mal en el codigo.
import { currentMember } from 'wix-members'; import wixLocation from 'wix-location'; export function button2_click(event) { wixLocation.to("www.page.com" + currentMember.getMember().then((member) => { const id = member._id; const status = member.status const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`; return member; }) .catch((error) => { console.error(error); }) ); }Después de mucha investigación en el foro de Wix Velo, descubrí la API members-wix , en este momento está teniendo problemas, lo que resulta en buscar funciones en la API de usuarios-wix, pero está obsoleta, lo que oculta funciones en el site el vellón dificultando el acceso a la información. Sin embargo, después de copiar una función de migración de users-wix members-wix , junto con la autenticación members-wix , funcionó perfectamente. También quiero agradecer a Mosh Feu por su ayuda https://stackoverflow.com/users/863110/mosh- feu, que me ayudó a entender y mejorar este código.
import { currentMember } from 'wix-members'; import wixLocation from 'wix-location'; import { authentication } from 'wix-members'; // NOTE: This example uses the new wix-members.currentMember.getMember() // function, which replaces wix-users.currentUser. // See the function description for more information, and // line 36 for the deprecated example. // ... currentMember.getMember('FULL') .then((member) => { // Replaces currentUser.id const id = member._id; // Replaces currentUser.loggedIn const loggedIn = member ? true : false; // Replaces currentUser.getEmail() const loginEmail = member.loginEmail; const contactEmails = member.contactDetails.emails; }) .catch((error) => { console.error(error); }); currentMember.getRoles() .then((roles) => { // Replaces currentUser.role and currentUser.getRoles() return roles; }) .catch((error) => { console.error(error); }); // NOTE: This example uses the deprecated // wix-users.currentUser object. import wixUsers from 'wix-users'; // ... let user = wixUsers.currentUser; let userId = user.id; // "r5cme-6fem-485j-djre-4844c49" let isLoggedIn = user.loggedIn; // true user.getEmail() .then((email) => { let userEmail = email; // "user@something.com" }); user.getRoles() .then((roles) => { let firstRole = roles[0]; let roleName = firstRole.name; // "Role Name" let roleDescription = firstRole.description; // "Role Description" }); user.getPricingPlans() .then((pricingPlans) => { let firstPlan = pricingPlans[0]; let planName = firstPlan.name; // "Gold" let startDate = firstPlan.startDate; // Wed Aug 29 2018 09:39:41 GMT-0500 (Eastern Standard Time) let expirationDate = firstPlan.expiryDate; // Thu Nov 29 2018 08:39:41 GMT-0400 (Eastern Daylight Time) }); export async function button2_click(event) { authentication.onLogin(async(member) => { const loggedInMember = await member.getMember(); const memberId = loggedInMember._id; console.log(`Member ${memberId} logged in:`, loggedInMember); }); const member = await currentMember.getMember(); const id = member._id; const status = member.status; const email = member.loginEmail const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`; const userDetails = JSON.stringify({ id, status, fullName ,email }); wixLocation.to(`https://www.url.com/?user=${encodeURIComponent(userDetails)}`); }getMember devuelve la Promesa, por lo que debe esperar ( await ) o que la Promesa se cumpla con los datos antes de poder usarlos.JSON.stringify .www.page.com{id:1111,status:'active'} . La forma válida de pasar datos a través de la URL es mediante parámetros de consulta, por ejemplo www.page.com?userDetails={id:1111,status:'active'} .encodeURIComponent() . export async function button2_click(event) { const member = await currentMember.getMember(); const id = member._id; const status = member.status const fullName = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`; const userDetails = JSON.stringify({id, status, fullName}); wixLocation.to(`www.page.com?user=${encodeURIComponent(userDetails)}`); } (Puede usar el "enfoque then " que está usando ahora, pero es una buena oportunidad para usar una API más moderna, como async/await)