Как вставить данные на сам ключ при создании нового объекта? - PullRequest
0 голосов
/ 01 февраля 2019

О реализации окна поиска символов с двумя опциями (Поиск в БД и Поиск в Web Api).Пока я набираю символ (например, AAPL - aple stock) в поле поиска, запрос 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.log('Saved the symbol web TO db', stockResult.symbol)
    return res.send(webApiData)

  } catch (ex) {
    console.log(`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

})

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

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