Mongoose: Попытка получить документ с помощью (id) - получить NULL - PullRequest
0 голосов
/ 26 февраля 2019

Итак, я пытаюсь получить курс, используя его идентификатор.Я пытался использовать:

  • Course.findOne ({_id: __id})
  • Course.findById (id)

Я не знаю почемуэто не работает, я должен определить тип _id в схеме?

Результат:

null

Вот моя схема + функция

const courseSchema = new mongoose.Schema({
  name: { type: String, required: true, minlength: 3, max: 255 },
  category: {
    type: String,
    required: true,
    enum: ["web", "mobile", "network"]
  },
  tag: [String],
  data: Date,
  author: String,
  isPublished: Boolean,
  price: {
    type: Number,
    required: function() {
      return this.isPublished;
    },
    min: 10,
    max: 200
  },
  __v: Number
});

const Course = mongoose.model("Course", courseSchema);

async function updateCourse(id) {
  // var __id = mongoose.Types.ObjectId(id);   // tried converting string id (?)

  console.log(id);
  // // method 1
  const course = await Course.findOne({ _id: __id });
  console.log("resulting...", course);
  if (!course) return;
  course.isPublished = true;
  course.author = "Another author";

  const result = await course.save();
  console.log("saved....", result);
}

updateCourse("5c726f6feb352743f8226239");

MongoDB:

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Попробуйте заменить __id на id.

Course.findOne({_id: id});
0 голосов
/ 26 февраля 2019

Вы не должны использовать __id в своем Course.findOne вызове - используйте _id: _id:

Course.findOne({_id: _id});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...