#javascript #arrays #velo
Вопрос:
Спасибо, что посмотрели на этот вопрос. Это сводит меня с ума.
У меня есть 2 базы данных с различными полями, которые:
набор данных = проектные продукты
идентификатор поля =
product
// соответствующий идентификатор в наборе данных продуктовидентификатор поля =
productQuantity
// возвращает номер
набор данных = продукты
идентификатор поля =
_id
// соответствие значению поля продукта в продуктах проектаидентификатор поля =
productPrice
// возвращает номер
Я пытаюсь запросить набор данных projectproducts и извлечь элементы из product
поля (их несколько сотен) и количество из productQuantity
поля.
Затем на основе product
поля (которое относится к ID
элементу/строке в наборе данных продуктов) запросите набор данных продуктов и извлеките результат из productPrice
поля.
Тогда я хотел бы умножить
productQuantity
результат xproductPrice
результат
и сложите все значения вместе, чтобы получить окончательную сумму.
Ответ №1:
Я не уверен в том, чем это отличается, когда задействованы наборы данных, но вот подход, который использует wixData
напрямую
import wixData from 'wix-data';
$w.onReady(async function () {
const {items: projectproducts} = await wixData.query('projectproducts').find();
const projectproductsQuery = wixData.query('products');
projectproducts.forEach(pp => {
projectproductsQuery.eq('_id', pp.product)
})
const {items: products} = await projectproductsQuery.find();
const productsPrices = products.reduce((acc, current) => ({
...acc,
[current._id]: current.price
}), {});
console.log({products, productsPrices, projectproducts});
const sum = projectproducts.reduce((acc, current) => {
return acc productsPrices[current.product] * current.productQuantity;
}, 0);
console.log(sum);
});
Демо: https://moshef9.wixsite.com/agg-collections (Откройте console
для получения дополнительной информации о коллекциях)