I followed the tutorial for related products and it works . HOWEVER, I want the products to only relate from Products A to Products B. I DO NOT want products B to relate back to Products A. Can anyone tell me how to change this code?
import wixData from ‘wix-data’ ;
import wixLocation from ‘wix-location’ ;
$w . onReady ( function () {
loadrelatedProducts ();
});
async function loadrelatedProducts ( ) {
let product = await $w ( ‘#productPage1’ ). getProduct ();
let relatedProductsResult = await Promise . all ([
relatedProductsByTable ( product ),
relatedProductsByPrice ( product )
]);
**if** ( relatedProductsResult [ 0 ]. length > 0 )
showRelatedProducts ( relatedProductsResult [ 0 ])
**else**
showRelatedProducts ( relatedProductsResult [ 1 ]);
}
async function relatedProductsByPrice ( product ) {
let productID = product . _id ;
// find related products by price
**let** relatedByPrice = **await** wixData . query ( 'Stores/Products' )
. between ( 'price' , product . price * 0.5 , product . price * 1.5 )
. ne ( '_id' , productID )
. find ();
**return** relatedByPrice . items ;
}
async function relatedProductsByTable ( product ) {
let productId = product . _id ;
//find related products by relation table
**let** relatedByTable = **await** Promise . all ([
wixData . query ( 'related-Products' )
. eq ( 'a' , productId )
. include ( 'productB' )
. find (),
wixData . query ( 'related-Products' )
. eq ( 'productB' , productId )
. include ( 'a' )
. find ()
]);
**let** relatedProducts = [
... relatedByTable [ 0 ]. items . map ( _ => _ . productB ),
... relatedByTable [ 1 ]. items . map ( _ => _ . a )
];
**return** relatedProducts ;
}
function showRelatedProducts ( relatedProducts ) {
if ( relatedProducts . length > 0 ) {
relatedProducts . splice ( 6 , relatedProducts . length );
$w ( ‘#relatedItemsRepeater’ ). onItemReady ( relatedItemReady );
$w ( ‘#relatedItemsRepeater’ ). data = relatedProducts ;
$w ( ‘#relatedItems’ ). expand ();
} else {
$w ( ‘#relatedItems’ ). collapse ();
}
}
function relatedItemReady ( $w , Product ) {
$w ( ‘#productImage’ ). src = Product . mainMedia ;
$w ( ‘#productName’ ). text = Product . name ;
$w ( ‘#productPrice’ ). text = Product . formattedPrice ;
$w ( ‘#productImage’ ). onClick (() => {
wixLocation . to ( Product . productPageUrl );
});
};