Я хотел бы создать фиктивные данные на основе массива JSON для тестирования внешнего интерфейса.
Структура объекта в массиве JSON:
Макет:
{
category: string,
items: string[]
}
Категория:
{
name: string,
products: Product[]
}
Продукт:
{
name: string,
prices: Price[]
}
Цена:
{
date: Date,
value: number
}
Я хотел бы создать случайные Price
с для каждого Product
, поэтому я создал следующую вспомогательную функцию:
// Creates Price array with random values within a given time window
// `times` is a `lodash` function
const getRandomPrices = (numberOfDays, minValue, maxValue) => times(numberOfDays, n => ({
date: new Date(new Date().setDate(new Date().getDate() - n)),
value: Math.floor(Math.random() * maxValue) + minValue
}))
И я заполняю базу данных MongoDB следующей функцией:
// data is Mock[]
// Price, Product and Category are MongoDB schemas
const createCategories = data.map(async c => {
const createProducts = c.items.map(async p => {
const prices = getRandomPrices(15, 100, 1000)
const createPrices = prices.map(price => Price.create(price))
return Product.create({
name: p,
prices: await Promise.all(createPrices)
})
})
return Category.create({
name: c.category,
products: await Promise.all(createProducts)
})
})
await Promise.all(createCategories)
console.log('done')
Моя проблема в том, что у меня такая же Price
данные для любого Product
в любом Category
и мои вопросы:
- как я могу рандомизировать цены?
- где я делаю неправильно?