Как добавить виртуальные поля для свойства в моей модели mongoDb, которая является массивом? - PullRequest
1 голос
/ 16 марта 2019

У меня есть свойство в моей модели с именем musiclinks, представляющее собой массив:

const userSchema = new Schema({
  email: {
    type: String,
    unique: true,
    lowercase: true,
    trim: true,
    validate: [validator.isEmail, 'Invalid Email Address'],
    required: 'Please Supply an email address'
  },
  name: {
    type: String,
    required: 'Please supply a name',
    trim: true
  },
  musicLinks: [String]
});

Теперь я хочу создать vitual field, который принимает значения musiclinks и преобразует их в iframes.после отправки в конечную точку oembed (конечные точки oembed в основном принимают URL и возвращают объект json с большим количеством данных)

Как я могу это сделать?Я добавил ссылку this.music на вызов ajax в блоке try

Но не работает:

userSchema.virtual('musicLinks.widget').get(function() {
  this.musicLinks.forEach( async element => {
    try {
      const response = await axios.get(`https://soundcloud.com/oembed?format=json&url=${element}`)
      embed = response.data
    } catch (e) {
      console.error('getUserBySlug error: ', e)
    }
    return embed    
  });
});

Есть идеи?

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