繁体   English   中英

*未捕获(承诺)TypeError :) 无法从 MongoDB Atlas 检索数组/集合

[英]*Uncaught (in promise) TypeError:) Unable to retrieve array/collection from MongoDB Atlas

我是 Express 和 Mongoose 的初学者,为了学习,我正在尝试使用Mongoose.Model从 MongoDB Atlas 中检索对象。 我已经在 CoursesModel.js 中创建了集合模式,我正在尝试使用Model.find().then()在数据库的 get 请求中检索它,但它什么都不返回。 我想知道我在哪里搞砸了。

课程模型.js

const Mongoose= require("mongoose");
const Course_schema=Mongoose.Schema;

const CourseObj=new Course_schema({
    type: {type:String, required:true},
    Uni:{type:String, required:true},
    Level:{type:String, required:true},
    Programs:{type:String, required:true},
    Availability:{type:String, required:true},
    Language:{type:String, required:true},
    Name:{type:String, required:true},
    img:{type:String, required:true}
})
const Course_Model= Mongoose.model("Courses",CourseObj);
module.exports.Course_Model=Course_Model;

索引.js

const {res}=require("express");
const expressModule=require("express");
var bodyParser = require("body-parser");
const mongoose= require("mongoose");
const app= expressModule(); 
app.use(expressModule.json());

const Course_Collection=require("./CourseDb");
const course_model=Course_Collection.Course_Model;


//Connection establishes successfully
mongoose.connect("mongodb+srv://admin1:12345@cluster1.hojfs.mongodb.net/Edx?retryWrites=true&w=majority",{ useUnifiedTopology: true,  useNewUrlParser: true} 
).then((res)=>{
    console.log("Database Connected"+res);
}).catch((err)=>{
    console.log(err);
});

app.listen(3000,()=>{
    console.log("Server listening at port 3000")
})
app.get("/addCourses",(request,response)=>{
    response.header("Access-Control-Allow-Origin","*");
    console.log("Get function called at server");
   course_model.find().then(
        (Courses)=>{
            console.log("List of courses:"+Courses[0]);//trying to get the first object but its undefined
            response.send(Courses);
        }
    ).catch((err)=>{
        console.log(err);
    })
})

首先,您可以在邮递员中尝试请求以便于验证。 100% 确定它来自 api 。 第二个应用这个:

在您的模型导出中:更改:

        const Course_Model= Mongoose.model("Courses",CourseObj);
        module.exports.Course_Model=Course_Model;

至 :

         exports.Course_Model= Mongoose.model("Courses",CourseObj);

在你的索引中

      const {Course_Model}=require("./CourseDb");
      const express = require('express');
      const router = express.Router();

     router.get("/addCourses",async (request,response)=>{
        try{
               response.header("Access-Control-Allow-Origin","*");
              console.log("Get function called at server");
              const list = await Course_Model.find();
                if(list){
              response.status(200).json({ list});
                   }
           }
        catch(error){

              response.status(404).json({error});
            }
     
           })

如果有帮助,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM