Vinnaren i pepparkakshustävlingen!
  • 2
  • 3
2024-07-11, 17:28
  #25
Medlem
Finikantens avatar
Citat:
Ursprungligen postat av Enterprise
hur blir det om du i din kod kör:
Kod:
$w("#likes1").text memberInfo.likes1.toString(); 

Enastående! Stort tack för hjälpen!
Citera
2024-07-11, 17:49
  #26
Moderator
vhes avatar
Använd kodtaggar när ni postar kod. https://www.flashback.org/announcement.php?f=211

/Moderator
Citera
2024-07-11, 18:38
  #27
Medlem
Finikantens avatar
Nu funkar koden för att införa likes till databasen och för att visa det totala antalet likes på sidan:

Kod:
$w("#emptyHeart1").onClick((event) => {
        wixData.get("Members", memberId)
       .then((memberInfo) => {
                $w('#emptyHeart1').collapse();
                $w('#fullHeart1').expand();
                $w('#likes1').text = (parseInt($w('#likes1').text) + 1).toString();
                memberInfo.likes1 = true;
                wixData.update('Members', memberInfo).catch();
  })
});

Men när jag med denna kod försökte ta bort ett iklickat hjärta från totalkoden så visades det bara på sidan medan databasen istället adderade ytterligare en like. Kan du se var felet ligger?

Kod:
$w("#fullHeart1").onClick((event) => {
        wixData.get("Members", memberId)
       .then((memberInfo) => {
                $w('#fullHeart1').collapse();
                $w('#emptyHeart1').expand();
                $w('#likes1').text = (parseInt($w('#likes1').text) - 1).toString();
                memberInfo.likes1 = true;
                wixData.update('Members', memberInfo).catch();
 })
});
Citera
2024-07-11, 22:08
  #28
Medlem
Enterprises avatar
För mig är det ofattbart att den första koden fungerar att öka siffran i databasen.
Det måste vara wixData.update() som skickar en uppdatering till databasen, då med objektet memberInfo till databasen Members. Men den enda ändring du gör av memberInfo är ju att sätta propertyn .likes1 till true. I Javascript översätts True till 1 om man tvingar en boolean till ett heltal. På något sätt måste alltså likes1 vara en kumultativ variabel som påverkar databasens värde på likes1 relativt snarare än i absoluta tal, vilket i sig verkar konstigt. Men utifrån detta kan du prova att sätta memberInfo.likes1 till -1 (minus ett) istället för till true, i den kod som ska minska antalet likes.
Citera
2024-07-12, 01:14
  #29
Medlem
Finikantens avatar
Citat:
Ursprungligen postat av Enterprise
För mig är det ofattbart att den första koden fungerar att öka siffran i databasen.
Det måste vara wixData.update() som skickar en uppdatering till databasen, då med objektet memberInfo till databasen Members. Men den enda ändring du gör av memberInfo är ju att sätta propertyn .likes1 till true. I Javascript översätts True till 1 om man tvingar en boolean till ett heltal. På något sätt måste alltså likes1 vara en kumultativ variabel som påverkar databasens värde på likes1 relativt snarare än i absoluta tal, vilket i sig verkar konstigt. Men utifrån detta kan du prova att sätta memberInfo.likes1 till -1 (minus ett) istället för till true, i den kod som ska minska antalet likes.

Ursäkta mig, jag borde givetvis även ha skickat med backend-informationen i min föregående post:

Kod:
import wixData from 'wix-data';

export function Members_beforeUpdate(item, context) {
    if (item.likes) {
        return wixData.get(context.collectionName, item._id, { "suppressHooks": true })
       .then(itemToUpdate => {
        itemToUpdate.likes ? itemToUpdate.likes += 1 : itemToUpdate.likes = 1;
        return itemToUpdate;
 })
}
        return item;
}

Något som gör mig konfys är dock att mina likes inte bara heter så för jag har likes1, likes2, likes3, likes 4, likes 5 och like 6 eftersom jag har sex olika bildramar för möjlighet att ladda upp bilder för mina medlemmar. Hur tar backend-koden ovan hänsyn till det med tanke på att likes bara benämns som just likes och inget annat? Måste jag kopiera koden och klistra in sex olika versioner med de olika likes-versionerna eller funkar koden för samtliga? I vilket fall så funkade det jättebra när jag bara provade med en av bildramarna men fick problem när jag försökte få de övriga att funka. Jag antar att det beror på backend-texten?
Citera
2024-07-12, 08:56
  #30
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Finikanten
Ursäkta mig, jag borde givetvis även ha skickat med backend-informationen i min föregående post:

Kod:
import wixData from 'wix-data';

export function Members_beforeUpdate(item, context) {
    if (item.likes) {
        return wixData.get(context.collectionName, item._id, { "suppressHooks": true })
       .then(itemToUpdate => {
        itemToUpdate.likes ? itemToUpdate.likes += 1 : itemToUpdate.likes = 1;
        return itemToUpdate;
 })
}
        return item;
}

Något som gör mig konfys är dock att mina likes inte bara heter så för jag har likes1, likes2, likes3, likes 4, likes 5 och like 6 eftersom jag har sex olika bildramar för möjlighet att ladda upp bilder för mina medlemmar. Hur tar backend-koden ovan hänsyn till det med tanke på att likes bara benämns som just likes och inget annat? Måste jag kopiera koden och klistra in sex olika versioner med de olika likes-versionerna eller funkar koden för samtliga? I vilket fall så funkade det jättebra när jag bara provade med en av bildramarna men fick problem när jag försökte få de övriga att funka. Jag antar att det beror på backend-texten?
Ja du, ju mer du visar upp av detta, desto starkare känner jag att du måste lämna Wix, speciellt om det är dåligt dokumenterat. Jag kan alltså inte Wix alls men logiskt sett borde det fungera att du sätter .likes till 1 eller -1 istället för true och sedan använder backend-koden värdet i denna för att addera eller subtrahera i databasen, typ:

Kod:
import wixData from 'wix-data';

export function Members_beforeUpdate(itemcontext) {
  if (
item.likes === || item.likes === -1) {
    return 
wixData.get(context.collectionNameitem._id, { "suppressHooks"true })
      .
then(itemToUpdate => {
        if (
typeof itemToUpdate.likes !== 'number') {
          
itemToUpdate.likes 0;
        }

        
itemToUpdate.likes += item.likes;

        if (
itemToUpdate.likes 1) {
          
itemToUpdate.likes false;
        }

        return 
itemToUpdate;
      });
  }

  return 
item;


Det här med skillanaden mellan likes och likes1-6 vågar jag inte ens ge mig in på.
__________________
Senast redigerad av Enterprise 2024-07-12 kl. 08:59.
Citera
2024-07-12, 10:41
  #31
Medlem
Finikantens avatar
Citat:
Ursprungligen postat av Enterprise
Ja du, ju mer du visar upp av detta, desto starkare känner jag att du måste lämna Wix, speciellt om det är dåligt dokumenterat. Jag kan alltså inte Wix alls men logiskt sett borde det fungera att du sätter .likes till 1 eller -1 istället för true och sedan använder backend-koden värdet i denna för att addera eller subtrahera i databasen, typ:

Kod:
import wixData from 'wix-data';

export function Members_beforeUpdate(itemcontext) {
  if (
item.likes === || item.likes === -1) {
    return 
wixData.get(context.collectionNameitem._id, { "suppressHooks"true })
      .
then(itemToUpdate => {
        if (
typeof itemToUpdate.likes !== 'number') {
          
itemToUpdate.likes 0;
        }

        
itemToUpdate.likes += item.likes;

        if (
itemToUpdate.likes 1) {
          
itemToUpdate.likes false;
        }

        return 
itemToUpdate;
      });
  }

  return 
item;


Det här med skillanaden mellan likes och likes1-6 vågar jag inte ens ge mig in på.

Jag har använt mig av Wix i ganska många år nu och vågar faktiskt inte lämna av just det skälet eftersom jag annars måste lära mig ett annat system i minst några månader. Grafiken är också till stor del kopplad till Wix system så det blir en för stor omställning. Mycket av de kodade funktionerna funkar också så jag börjar närma mig sluttampen (hoppas jag i alla fall). Tack för din kodversion som jag nu genast ska prova
Citera
2024-07-12, 15:07
  #32
Medlem
Finikantens avatar
Tyvärr så funkade inte din i mitt tycke logiska kod för backend (fråga mig inte varför) så jag använder denna långa uppställning:

För backend

Kod:
import wixData from 'wix-data';

export function Members_likes1(item, context) {
    if (item.likes1) {
        return wixData.get(context.collectionName, item._id, { "suppressHooks": true })
       .then(itemToUpdate => {
        itemToUpdate.likes1 ? itemToUpdate.likes1 += 1 : itemToUpdate.likes1 = 1;
        return itemToUpdate;
 })
}
        return item;
}

export function Members_likes2(item, context) {
    if (item.likes2) {
        return wixData.get(context.collectionName, item._id, { "suppressHooks": true })
       .then(itemToUpdate => {
        itemToUpdate.likes2 ? itemToUpdate.likes2 += 1 : itemToUpdate.likes2 = 1;
        return itemToUpdate;
 })
}
        return item;
}

export function Members_likes3(item, context) {
    if (item.likes3) {
        return wixData.get(context.collectionName, item._id, { "suppressHooks": true })
       .then(itemToUpdate => {
        itemToUpdate.likes3 ? itemToUpdate.likes3 += 1 : itemToUpdate.likes3 = 1;
        return itemToUpdate;
 })
}
        return item;
}

export function Members_likes4(item, context) {
    if (item.likes4) {
        return wixData.get(context.collectionName, item._id, { "suppressHooks": true })
       .then(itemToUpdate => {
        itemToUpdate.likes4 ? itemToUpdate.likes4 += 1 : itemToUpdate.likes4 = 1;
        return itemToUpdate;
 })
}
        return item;
}

export function Members_likes5(item, context) {
    if (item.likes5) {
        return wixData.get(context.collectionName, item._id, { "suppressHooks": true })
       .then(itemToUpdate => {
        itemToUpdate.likes5 ? itemToUpdate.likes5 += 1 : itemToUpdate.likes5 = 1;
        return itemToUpdate;
 })
}
        return item;
}

export function Members_likes6(item, context) {
    if (item.likes6) {
        return wixData.get(context.collectionName, item._id, { "suppressHooks": true })
       .then(itemToUpdate => {
        itemToUpdate.likes6 ? itemToUpdate.likes6 += 1 : itemToUpdate.likes6 = 1;
        return itemToUpdate;
 })
}
        return item;
}

För frontend

Kod:
let url = wixLocation.url;
      let memberId = url.substr(url.lastIndexOf("/") + 1);

$w.onReady(async function () {
      let memberInfo = await Members_likes1(memberId);
        $w("#emptyHeart1").onClick((event) => {
        $w("#likes1").text = (memberInfo.likes1);
        $w('#emptyHeart1').collapse();
        $w('#fullHeart1').expand();
        $w('#likes1').text = (parseInt($w('#likes1').text) + 1).toString();
            memberInfo.Members_likes1 = true;
            wixData.update("Members", memberInfo).then(() => { $w("#dynamicDataset").refresh();})
});
      async function Members_likes1(memberId) {
      let query = wixData.query("Members")
       .eq("_id", memberId)
	   .find();
	  let results = await query;
	  if (results.items.length > 0) {
	  return results.items[0];
    } else {
	      console.error(`Member with ID ${memberId} not found`);
	  return {
	      likes1: "0",       
   };
   }
  }
})
$w.onReady(async function () {
      let memberInfo = await Members_likes2(memberId);
        $w("#emptyHeart2").onClick((event) => {
        $w("#likes2").text = (memberInfo.likes2);
        $w('#emptyHeart2').collapse();
        $w('#fullHeart2').expand();
        $w('#likes2').text = (parseInt($w('#likes2').text) + 1).toString();
            memberInfo.likes2 = true;
            wixData.update("Members", memberInfo).then(() => { $w("#dynamicDataset").refresh();})
});
      async function Members_likes2(memberId) {
      let query = wixData.query("Members")
       .eq("_id", memberId)
	   .find();
	  let results = await query;
	  if (results.items.length > 0) {
	  return results.items[0];
    } else {
	      console.error(`Member with ID ${memberId} not found`);
	  return {
	      likes2: "0",       
   };
   }
  }
})
$w.onReady(async function () {
      let memberInfo = await Members_likes3(memberId);
        $w("#emptyHeart3").onClick((event) => {
        $w("#likes3").text = (memberInfo.likes3);
        $w('#emptyHeart3').collapse();
        $w('#fullHeart3').expand();
        $w('#likes3').text = (parseInt($w('#likes3').text) + 1).toString();
            memberInfo.likes3 = true;
            wixData.update("Members", memberInfo).then(() => { $w("#dynamicDataset").refresh();})
});
      async function Members_likes3(memberId) {
      let query = wixData.query("Members")
       .eq("_id", memberId)
	   .find();
	  let results = await query;
	  if (results.items.length > 0) {
	  return results.items[0];
    } else {
	      console.error(`Member with ID ${memberId} not found`);
	  return {
	      likes3: "0",       
   };
   }
  }
})
$w.onReady(async function () {
      let memberInfo = await Members_likes4(memberId);
        $w("#emptyHeart4").onClick((event) => {
        $w("#likes4").text = (memberInfo.likes4);
        $w('#emptyHeart4').collapse();
        $w('#fullHeart4').expand();
        $w('#likes4').text = (parseInt($w('#likes4').text) + 1).toString();
            memberInfo.likes4 = true;
            wixData.update("Members", memberInfo).then(() => { $w("#dynamicDataset").refresh();})
});
      async function Members_likes4(memberId) {
      let query = wixData.query("Members")
       .eq("_id", memberId)
	   .find();
	  let results = await query;
	  if (results.items.length > 0) {
	  return results.items[0];
    } else {
	      console.error(`Member with ID ${memberId} not found`);
	  return {
	      likes4: "0",       
   };
   }
  }
})
$w.onReady(async function () {
      let memberInfo = await Members_likes5(memberId);
        $w("#emptyHeart5").onClick((event) => {
        $w("#likes5").text = (memberInfo.likes5);
        $w('#emptyHeart5').collapse();
        $w('#fullHeart5').expand();
        $w('#likes5').text = (parseInt($w('#likes5').text) + 1).toString();
            memberInfo.likes5 = true;
            wixData.update("Members", memberInfo).then(() => { $w("#dynamicDataset").refresh();})
});
      async function Members_likes5(memberId) {
      let query = wixData.query("Members")
       .eq("_id", memberId)
	   .find();
	  let results = await query;
	  if (results.items.length > 0) {
	  return results.items[0];
    } else {
	      console.error(`Member with ID ${memberId} not found`);
	  return {
	      likes5: "0",       
   };
   }
  }
})
$w.onReady(async function () {
      let memberInfo = await Members_likes6(memberId);
        $w("#emptyHeart6").onClick((event) => {
        $w("#likes6").text = (memberInfo.likes6);
        $w('#emptyHeart6').collapse();
        $w('#fullHeart6').expand();
        $w('#likes6').text = (parseInt($w('#likes6').text) + 1).toString();
            memberInfo.likes6 = true;
            wixData.update("Members", memberInfo).then(() => { $w("#dynamicDataset").refresh();})
});
      async function Members_likes6(memberId) {
      let query = wixData.query("Members")
       .eq("_id", memberId)
	   .find();
	  let results = await query;
	  if (results.items.length > 0) {
	  return results.items[0];
    } else {
	      console.error(`Member with ID ${memberId} not found`);
	  return {
	      likes6: "0",       
   };
   }
  }
})

Här kan du studera min inspirationskälla: https://jonatandor35.wixsite.com/test/like/2
Citera
2024-07-12, 16:17
  #33
Medlem
Finikantens avatar
Kan man kombinera Number och parseInt så här?

$w("#likes1").text = (Number(parseInt($w("#likes1").text) + 1).toString();

Än så länge har det inte fungerat för mig men det kan bero på något annat.
Citera
2024-07-20, 21:14
  #34
Medlem
Citat:
Ursprungligen postat av Finikanten
Den här koden fungerar

const date = $w("#registerDate").text = (memberInfo._createdDate);

const options = {
day: "numeric",
month: "long",
year: "numeric",
};
$w("#registerDate").text = date.toLocaleDateString("en-US", options);

Ehm...

Nu befattar jag mig inte med Java eller med dess Javascript (med anhang av ramformat), men detta:
===>
Kod:
const date $w("#registerDate").text = (memberInfo._createdDate); 
gör nog inte vad du har tänkt att den ska göra.
Citera
  • 2
  • 3

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in