Почему Монго не может вставить мой ObjectId в предопределенный массив? - PullRequest
0 голосов
/ 11 декабря 2018

Я сделал свою модель, она имеет следующую схему:

const CompanySchema = new Schema({
    companyName: {
      type: String,
      required: [true,'the name of the companies working on the game are missing.']
    },
    companyAge: {
      type: Number,
      required: [true,'the age of the company is missing.']
    },
    companyDeveloper:[{
      type: Schema.Types.ObjectId,
      ref: "developer"
    }]
  });

Я пытаюсь вставить элемент в массив companyDeveloper, например:

  addDev(req,res,next){
    const companyId = req.params.id;
    const companyDeveloper = ObjectId.fromString(req.body.companyDeveloper);
    Company.findById({_id: companyId})
    .then((company) => company.companyDeveloper.push({companyDeveloper}))
    .then(company => res.send(company))
    .catch(next);
  }

, но продолжаю получатьэта ошибка: «ошибка»: «ObjectId не определен».

До того, как я попытался привести его к сбою, я получил эту ошибку. Приведение к ObjectId не удалось для значения

Как мне заставить эту функцию работать?

экран печати

ошибка вызова почтальона

1 Ответ

0 голосов
/ 11 декабря 2018

Класс ObjectId из mongoose определен для Mongoose.Schema.Types.ObjectId

. Вы можете указать его в файле, в котором вы определяете addDev

const ObjectId = require('mongoose').Schema.Types.ObjectId

, или загрузить mongoose в глобальную область, в которой выинициализируйте код своего узла, чтобы вы могли получить к нему доступ в любом файле:

global.Mongoose = require('mongoose')

, а затем использовать его в своем методе:

const companyDeveloper = Mongoose.Schema.Types.ObjectId.fromString(req.body.companyDeveloper);
...