Как передать данные по самому ключу при создании экземпляра нового объекта?

О реализации окна поиска символов с двумя параметрами (поиск в БД и поиск в веб-API). Пока я набираю символ (например: AAPL - акции Apple) в поле поиска, запрос fetch() каждый раз отправляется по сети. А затем результат сохраняется в базе данных. Каждый раз, когда я создаю экземпляр объекта new Stock(), я помещаю результат в ключ данных объекта. Потому что это не работает

const stock = new Stock({ //const {Stock} = require('../models/Stock')
      symbol: curValue,// req.params.symbol
      data: webApiData.map(function (item) {
        this.data.push(item)
      })
    })

В качестве решения пуш выходит за пределы new Stock({})

 webApiData.map(item => {
      stock.data.push(item)
    })

Вот полный рабочий код:

(async function creatStock() {
  try {
    const webApiData = await fetchWebApi(urlCompact)
    const stock = new Stock({ //const {Stock} = require('../models/Stock')
      symbol: curValue// req.params.symbol
      // data: webApiData.map(function (item) {
      //   this.data.push(item)
      // })
    })

    webApiData.map(item => {
      stock.data.push(item)
    })

    const query = { symbol: `${curValue}` }
    const update = { $addToSet: { data: stock.data } }
    const options = { upsert: true, new: true }

    const stockResult = await Stock.findOneAndUpdate(query, update, options)
    console.info('Saved the symbol web TO db', stockResult.symbol)
    return res.send(webApiData)

  } catch (ex) {
    console.info(`creatStock error: ${ex.errors}`)
  }
})()

Вот схема БД

const ChildSchemaData = new mongoose.Schema({
  "_id": false,
  date: { type: mongoose.Types.Decimal128 },
  open: { type: mongoose.Types.Decimal128 },
  high: { type: mongoose.Types.Decimal128 },
  low: { type: mongoose.Types.Decimal128 },
  close: { type: mongoose.Types.Decimal128 },
  volume: { type: mongoose.Types.Decimal128 }
})

const ParentSchemaSymbol = new mongoose.Schema({
  "_id": false,
  symbol: {
    type: String,
    trim: true,
    minlength: 1,
    uppercase: true,
    required: 'Please enter a valid symbol, min 1 character'
  },
  // Array of subdocuments
  data: [ChildSchemaData],
  slug: String

})

Дайте мне знать, если я что-то упустил.

Почему не просто data: webApiData? Похоже, .map вообще не нужен.

CertainPerformance 01.02.2019 07:56
webApiData является результатом массива объектов fetch(), который я все еще должен пройти в цикле и вставить в ключ data:. Или я не понимаю, что вы имели в виду?
John John 01.02.2019 08:01

Зачем нужен цикл? Почему вы не можете просто определить свойство .data как простой ответ массива webApiData?

CertainPerformance 01.02.2019 08:02

Я только что добавил схему к вопросу.

John John 01.02.2019 08:05

Я извлекаю данные, чтобы нарисовать диаграмму, содержащую множество точек данных, которые мне нужно просмотреть.

John John 01.02.2019 08:07

Я только что проверил, выглядит хорошо! Спасибо!

John John 01.02.2019 08:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
50
0

Другие вопросы по теме