I’m just trying to pull a very simple url with Wix Media Backend API (getFileUrl) but it doesn’t work like I want. I can’t pass incoming URL into object it just pass undefined. I also console.log incoming URL and I can see there is URL it’s working but it doesn’t pass this URL into object here is the backend code. Just spent 6 hours for this very stupid thing and still can’t understand why it’s not working.
All I want to do is create my own Orders page but it’s being impossible to create because nothing is working like I want.
getFileUrl - Velo API Reference - Wix.com
Here is the backend code: (I made the problem code black and bold)
import wixData from 'wix-data'
import { mediaManager } from 'wix-media-backend';
export async function getOrders(memberId) {
let options = {
"suppressAuth": true,
};
return wixData.query("Stores/Orders")
.eq("buyerInfo.id", memberId)
.find(options)
.then((orders) => {
if (orders.items.length > 0) {
let orderData = orders.items;
return wixData.query("Products")
.include("productId")
.find(options)
.then((products) => {
if (products.items.length > 0) {
let productsData = products.items;
return orderData.map((order, index) => {
let orderData = {
"_id": order._id,
"formattedAddress": order.billingInfo.address.formatted,
"paymentMethod": order.billingInfo.paymentMethod,
"memberEmail": order.buyerInfo.email,
"memberLastName": order.buyerInfo.lastName,
"memberFirstName": order.buyerInfo.firstName,
"memberId": order.buyerInfo.id,
"memberPhone": order.buyerInfo.phone,
"orderDate": order._dateCreated,
"orderNo": order.number,
"lineItems": [],
"paymentStatus": order.paymentStatus,
"totals": order.totals
}
orderData.lineItems = order.lineItems.map((lineItemData) => {
let lineItem = {
"productDownload": undefined,
"productName": lineItemData.name,
"productQuantity": lineItemData.quantity,
"productSku": lineItemData.sku,
"tax": lineItemData.tax,
"productPrice": lineItemData.priceData.price,
"totalPrice": lineItemData.priceData.totalPrice,
"options": lineItemData.options,
"customTextFields": lineItemData.customTextFields,
"productImage": lineItemData.mediaItem.id,
"discount": lineItemData.discount
}
productsData.forEach((product) => {
if (product.productId._id === lineItemData.productId) {
let now = new Date();
let gap = now.getTime() - order._dateCreated.getTime();
if (product.productId._id === lineItemData.productId && gap < 31556952000) {
if (product.productDownload) {
let start = product.productDownload.search("archives/") + 9;
let end = product.productDownload.search(".zip") + 4;
let fileName = product.productDownload.slice(start, end)
lineItem.productDownload = mediaManager.getFileUrl(fileName);
}
}
}
})
return lineItem
})
return orderData;
})
}
})
}
})
.catch((err) => {
console.error(err)
})
}
As you can see there is no problem when I test it I’m getting all data except downloadUrl (I tried passing data after .then also not working I tried everything) please someone tell me why this API not working like I want it’s not passing the data here is test results:
result is Empty object for URL
BUT BUT BUT
Here is the console log for url and it’s actually exist but didn’t pass the url inside.
Result is coming first console log