findByID()id返回空值

时间:2019-03-31 08:27:31

标签: node.js mongoose

模式定义:

const coursesSchema = new mongoose.Schema({
    name: String,
    author: String,
    tags: [String],
    date: {
        type: Date,
        default: Date.now
    },
    isPublished: Boolean
});
const Courses = mongoose.model('Courses', coursesSchema);

在这里我连接到数据库架构

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mongo-exercises').then(() => {
    console.log('mongoose connceted successfylly');
}).catch((err) => {
    console.log('mongoose didnt connected');
})

我正在尝试从MongoDB中获取记录。但是它返回的是空值而不是对象

async function getCourses() {
  const course = await Courses.find();
  console.log(course);
} 

它运行良好,正在从数据库中返回所有对象。

async function updateCourse(id) {
  const course = await Courses.findById({_id:id});
  console.log(course);
}

编辑:

我在这里传递ID以获取ID

updateCourse('5a68fe2142ae6a6482c4c9cb');

you can check my database structure 甚至我都传递了正确的ID

任何人都可以帮助我解决问题

1 个答案:

答案 0 :(得分:0)

看看findById documentation,您只需要传递id作为参数,而不是与id(function CreateMix(...classes) { return function Mixed(){ const instances =[this, ... classes.map(cls => new cls(...arguments))] const weakbind = (proxy,fn,obj) => new Proxy(fn, { apply(fn, thisArg, props){ return fn.apply(proxy === thisArg? obj:thisArg ,props); }}) return new Proxy(this, { get(_, prop, proxy) { obj = instances.find(obj => prop in obj); const val = Object(obj)[prop]; return typeof val === "function" ? weakbind(proxy,val,obj) : val; }, has(_, prop) { // Optional: if you care about the `in` operator return instances.some(obj => prop in obj); }, }); } } // class Mixed extends CreateMix(Map, EventTarget){} var Mixed = CreateMix(Map, EventTarget); var obj12 = new Mixed(); obj12.set('foo','bar'); console.log("Map contains: ", Object.fromEntries(obj12)); obj12.addEventListener('foo', e => console.log("Event object type: ", e.type) ); obj12.dispatchEvent( new Event('foo') ); obj12.a = 3; obj12.myfn = function (){console.log( this.a) }; obj12.myfn() // 3 obj12.myfn.call({a:4}) // 4 class MyAwsomeClass extends CreateMix(Map, EventTarget){ constructor(){ super(...arguments); this.a = 33; } logA(){ console.log( this.a) } } const myAwsomeInstance = new MyAwsomeClass( obj12 ); myAwsomeInstance.has('foo') // true)相匹配的对象。

您的方法应如下:

{_id:id}