猫鼬:尝试使用(id)检索文档-获取NULL

时间:2019-02-26 04:16:02

标签: javascript mongodb mongoose orm mongodb-query

因此,我正在尝试使用其ID检索课程。我尝试使用:

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

我不确定为什么它不起作用,是否必须在模式中定义_id类型?

结果:

  

这是我的模式+函数

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 :(得分:0)

您不应在__id通话中使用Course.findOne,而应使用_id: _id

Course.findOne({_id: _id});

答案 1 :(得分:0)

尝试将__id替换为id

Course.findOne({_id: id});