Click here to Skip to main content
15,877,246 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I got this problem

throw new MongooseError('The `uri` parameter to `openUri()` must be a ' +


I am uploading my full be please tell me what i can do

What I have tried:

**index.js**

    const Koa = require("koa");
    const KoaRouter = require("koa-router");
    const cors = require("@koa/cors");
    const bodyParser = require("koa-bodyparser");
    const json = require("koa-bodyparser");
    const { dbConnect } = require("./utils/dbConnect");
    const courseRoutes = require("./routes/course.routes");
    const studentRoutes = require("./routes/student.routes");
    
    const app = new Koa();
    const router = new KoaRouter();
    
    app.use(cors());
    app.use(bodyParser());
    app.use(json());
    app.use(router.routes()).use(router.allowedMethods());
    app.use(courseRoutes.routes());
    app.use(studentRoutes.routes());
    
    router.get("/", (ctx) => {
      ctx.body = { message: "Student Management API" };
    });
    
    app.listen(9000, () => {
      dbConnect();
      console.log(`Server is up and running on http://localhost:9000`);
    });

**Student.Controller**

    const Student = require("../models/student.model");
    const Course = require("../models/course.model");
    
    const addStudent = async (ctx) => {
      try {
        const { name, nic, age, courseId } = ctx.request.body;
        const student = await Student.create({
          name,
          nic,
          age,
          courseId,
        });
    
        await Course.findByIdAndUpdate(courseId, { $push: { students: student._id } });
        return (ctx.body = student);
      } catch (error) {
        return (ctx.body = { message: error.message });
      }
    };
    
    const getStudents = async (ctx) => {
      try {
        const students = await Student.find().populate({
          path: "courseId",
          select: "courseName courseFee",
        });
        return (ctx.body = students);
      } catch (error) {
        return (ctx.body = { message: error.message });
      }
    };
    
    const updateStudent = async (ctx) => {
      try {
        const studentId = ctx.params.studentId;
        const { name, nic, age, courseId } = ctx.request.body;
    
        const student = await Student.findByIdAndUpdate(studentId, {
          name,
          nic,
          age,
          courseId,
        });
    
        await Course.findByIdAndUpdate(student.courseId, {
          $pull: { students: studentId },
        });
    
        await Course.findByIdAndUpdate(courseId, {
          $push: { students: studentId },
        });
    
        return (ctx.body = student);
      } catch (error) {
        return (ctx.body = { message: error.message });
      }
    };
    
    const deleteStudent = async (ctx) => {
      try {
        const studentId = ctx.params.studentId;
    
        const student = await Student.findById(studentId);
    
        await Course.findByIdAndUpdate(student.courseId, { $pull: { students: studentId } });
        await Student.findByIdAndDelete(studentId);
        return (ctx.body = student);
      } catch (error) {
        return (ctx.body = { message: error.message });
      }
    };
    
    module.exports = {
      addStudent,
      getStudents,
      updateStudent,
      deleteStudent,
    };

**Student.Model**

    const mongoose = require("mongoose");
    
    const StudentSchema = new mongoose.Schema({
      name: { type: String, required: true },
      nic: { type: String, required: true },
      age: { type: Number, required: true },
      courseId: { type: mongoose.Schema.Types.ObjectId, required: false, ref: "courses" },
    });
    
    const Student = mongoose.model("students", StudentSchema);
    
    module.exports = Student;


**Student.route**

    const KoaRouter = require("koa-router");
    const {
      addStudent,
      getStudents,
      updateStudent,
      deleteStudent,
    } = require("../controller/student.controller");
    const router = new KoaRouter({ prefix: "/student" });
    
    router.post("/add", addStudent);
    router.delete("/:studentId", deleteStudent);
    router.put("/:studentId", updateStudent);
    router.get("/", getStudents);
    
    module.exports = router;

**Student.login.controller**

    const User = require("../models/user.model");
    
    const registerUser = async (ctx)=>{
        try {
            const { useremail,userpassword} = ctx.request.body;
    
            if(!useremail || !userpassword){
                 throw new Error("Please provide all values");
            }
    
            const alreadyExist = await User.findOne({useremail});
    
            if(alreadyExist){
                 throw new Error("Already Exisits");
            }
    
            const user = await User.create({useremail,userpassword});
            return (ctx.body = user);
        } catch (error) {
             return (ctx.body = {message:error.message});
        }
    };
    
    const login = async (ctx)=>{
        try {
            const { useremail, userpassword } = ctx.request.body;
    
            if (!useremail || !userpassword) {
              throw new Error("Please provide all values");
            }
            const user = await User.findOne({useremail});
            const matchPassword = await User.findOne({ userpassword });
    
            if(!user ||!matchPassword){
                 ctx.throw (401,"Invalid credentials");
            }
            
            return (ctx.body = user);
        } catch (error) {
             return (ctx.body = { message: error.message });
        }
    };
    
    module.exports={
        registerUser,
        login,
    }


**Db connect**

    const mongoose = require("mongoose");
    
    const dbConnect = () => {
      const dbConStr = process.env.MONGODB_URL;
    
      mongoose.connect(dbConStr, () => {
        console.log("Database connected");
      });
    };
    
    module.exports = { dbConnect };
Posted
Updated 28-Jun-22 14:45pm
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900