Citat:
Ursprungligen postat av
Finikanten
Jag är även konfys över en annan sak. Min backend-kod verkar vara för ett databasfält med ett visst namn (likes1) men jag har fält med olika namn för likes (likes1, likes2, likes 3 etc.) och undrar om ett enda namn som t ex "files" kan gälla för dem alla? Eller måste jag kopiera den ursprungliga koden och klistra in nya med varje fältnamn i backend?
Utan att veta hur det ser ut så är det väl logiskt att likes enbart har ett fält i databasen, eftersom varje medlemsid rimligen enbart kan ha ett (1) antal likes, inte flera.
Så att du i frontend-koden tydligen har flera olika objekt med likes, beror väl på att flera medlemmar visas på sidan. Det får anses som dålig practice att använda element-ID som "likes1". Jag förstår inte riktigt syftet med det. Istället för
Kod:
$W("#emptyHeart1").onClick(---kod här---)
Så borde man sätta de element som man ska kunna klicka för att addera likes som klassen heart-container eller liknande:
[PHP]$w(".heart-container").onClick((event) => {
const t = event.target;
wixData.get("Members", memberId)
.then((memberInfo) => {
const clickedContainer = $w(t).closest('.heart-container');
const emptyHeart = clickedContainer.find('.empty-heart');
emptyHeart.collapse();
const fullHeart = clickedContainer.find('.full-heart');
fullHeart.expand();
const textBox = clickedContainer.find('.likes-text');
textBox.text = (parseInt(textBox.text, 10) + 1).toString();
memberInfo.likes = true;
wixData.update("Members", memberInfo).catch((error) => {
console.error("Failed to update member info:", error);
});
})
.catch((error) => {
console.error("Failed to get member info:", error);
});
});
[/PHP]
Något sådant. Dock förusätter detta att HTML-koden för din sida ändras så att alla klickbara hjärtcontainrar får klassen heart-container, att tomma hjärtan får klassen empty-heart, att full hjärtan får klassen full-heart och siffran där antal likes står får klassen likes-text.
Backend-koden uppdateras för att ta bort likes1-referensen:
[PHP]import wixData from 'wix-data';
export function Members_likes(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;
}
[/PHP]