Преобразование в ObjectID не выполнено для значения - PullRequest
0 голосов
/ 17 января 2019

Я получаю имя (String) в своем теле в массиве, и я хочу преобразовать каждый массив в его идентификатор объекта из моей коллекции.

Я хочу отослать строки в схему и заменить их на ObjectId,

Вот моя схема:

var tagSchema = new Schema({

name: {
    type: String,
    required: true
  }
});

Вот что я делаю в моем API:

var tags = req.body.tags;
tags.forEach((item, index) => {
    Tag.findOne({name: item}, (err,result)=> {
      tags[index] = result._id;
    });
 })

Но в моей консоли я получаю эту ошибку:

CastError: сбой приведения к массиву для значения "['tag1', 'tag2']" в пути "tags"

Вот когда я регистрирую теги:

['tag1', 'tag2']

В чем проблема?

Заранее спасибо!

1 Ответ

0 голосов
/ 17 января 2019
Теги

представляют собой массив строк, и вы помещаете в него objectId, поэтому он выдает ошибку. CastError: Ошибка приведения к массиву для значения "['tag1', 'tag2']" в пути "tags"

Есть несколько решений, которые вы можете реализовать в соответствии с вашими требованиями. см. пример ниже.

var tags = req.body.tags;
    var tagsObjectId=[];
    tags.forEach((item, index) => {
        Tag.findOne({name: item}, (err,result)=> {
          if(!err){
             tagsObjectId.push(result._id)
          }
        });
     })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...