skip to Main Content

I’m trying to use a very basic MongoDB method is to save a document on a database with mongoose.

1.I installed my MongoDB in centos 7

2.Create a database on the Mongo shell using: use mydatabase and insert a document inside it as normal.

3.Install mongoose and make a connection between my nodejs app and the MongoDB:

mongoose.connect('mongodb://localhost:27017/goClass_test', {
  useUnifiedTopology: true,
  useNewUrlParser: true,
});

4. test the connection and all is fine with:

db.once('open', () => {
  console.log('DB Connected');
});
  1. Import the model schema as normal:

var { Classe } = require('../DBModels/GoClassDBModels/classes');

  1. try to add new document like this:
var newClasse = new Classe({
     label: 'hello',
     level: 'level',
   });
newClasse.save()

My Model is:

const mongoose = require('mongoose');
const { Schema } = require('mongoose');
var ObjectId = mongoose.Schema.Types.ObjectId;

var classSchema = new Schema({
  directeurId: {
    type: ObjectId,
  },
  label: {
    type: String,
  },
  level: {
    type: String,
  },
  studentNbr: {
    type: String,
  },
});

var Classe = mongoose.model('Classes', classSchema);

module.exports = { Classe };

SERVER.JS:

const mongoose = require('mongoose');
const express = require('express');
const bodyParser = require('body-parser');
const http = require('http');
const cookieParser = require('cookie-parser');
const _ = require('lodash');

var app = express();
var server = http.createServer(app);
server.listen(80, () => {
  console.log('server is started on 80');
});

mongoose.connect('mongodb://localhost:27017/goClass_test', {
  useUnifiedTopology: true,
  useNewUrlParser: true,
});

console.log(mongoose.connection.host);
console.log(mongoose.connection.port);

let db = mongoose.connection;

db.once('open', () => {
  console.log('DB Connected');
});

db.on('error', (err) => {
  console.log(err);
});

var { Classe } = require('../DBModels/GoClassDBModels/classes');

const goClasseRouteDirecteur = require('./GOClassRoutes/DirecteurRoutes/subRoutesClass');

app.use(bodyParser.json());
app.use(cookieParser(['lakkini.com']));
app.use(
  bodyParser.urlencoded({
    extended: false,
  })
);

app.use(function (req, res, next) {
  res.set(
    'Cache-Control',
    'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'
  );
  next();
});

app.set('view engine', 'hbs');
app.use(express.static('/home/admin/SMS'));
app.use(express.static('/home/admin/assets'));

app.get('/', (req, res) => {
  res.render('SMS/dashboard.hbs');
});

app.get('/classes', (req, res) => {
  res.render('SMS/classes.hbs');
});

app.get('/inscription', (req, res) => {
  res.render('SMS/inscriptions.hbs');
});

app.post('/saveClasse', (req, res) => {
  var newClasse = new Classe({
    label: 'hello',
    level: 'level',
  });
  console.log('im gonna save the new class');
  newClasse.save((err, response) => {
    if (err) console.log(err);
    else console.log(response);
  });
});

The problem is: nothing happened. No document has been inserted and no errors.
Can you suggest to me, please ?

PS: I’m trying to request from an HTTP server without HTTPS.

will that affect my requests nd block the save to the database?

result:
click to see the picture of the result please

2

Answers


  1. Chosen as BEST ANSWER

    I found the issue, but I don't understand why that. the first structure was:

    **

    • DBModel
      • classes.js
    • Server
      • server.js**

    the structure right now:

    **

    • DBModel

      • classes.js
    • server.js

    **

    I make out the server from that folder and all working fine...??

    why that?


  2. Since the whole file was not given for mongoose connection and where save function is called , assuming you have structured it properly i’m giving my answer.
    I was able to do this way,

    The schema (same as yours) :

    const mongoose = require("mongoose");
    const { Schema } = require("mongoose");
    var ObjectId = mongoose.Schema.Types.ObjectId;
    
    var classSchema = new Schema({
      directeurId: {
        type: ObjectId,
      },
      label: {
        type: String,
      },
      level: {
        type: String,
      },
      studentNbr: {
        type: String,
      },
    });
    
    var Classe = mongoose.model("Classes", classSchema);
    
    module.exports = { Classe };

    Function to insert:

    mongoose.connect("mongodb://localhost:27017/goClass_test", {
        useUnifiedTopology: true,
        useNewUrlParser: true,
      });
    
      var db = mongoose.connection;
      db.on("error", console.error.bind(console, "connection error:"));
    
      db.once("open", () => {
        console.log("DB Connected");
        var newClasse = new Classe({
          label: "hello",
          level: "level",
        });
    
        newClasse.save();
      });
    

    UPDATE:

    SERVER.JS

    const mongoose = require("mongoose");
    const express = require("express");
    const bodyParser = require("body-parser");
    const http = require("http");
    const cookieParser = require("cookie-parser");
    const _ = require("lodash");
    
    var app = express();
    var server = http.createServer(app);
    server.listen(80, () => {
      console.log("server is started on 80");
    });
    
    mongoose.connect("mongodb://localhost:27017/goClass_test", {
      useUnifiedTopology: true,
      useNewUrlParser: true,
    });
    
    console.log(mongoose.connection.host);
    console.log(mongoose.connection.port);
    
    let db = mongoose.connection;
    
    db.once("open", () => {
      console.log("DB Connected");
    });
    
    db.on("error", (err) => {
      console.log(err);
    });
    
    var { Classe } = require("./models/Classe");
    
    // const goClasseRouteDirecteur = require('./GOClassRoutes/DirecteurRoutes/subRoutesClass');
    
    app.use(bodyParser.json());
    app.use(cookieParser(["lakkini.com"]));
    app.use(
      bodyParser.urlencoded({
        extended: false,
      })
    );
    
    app.use(function (req, res, next) {
      res.set(
        "Cache-Control",
        "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0"
      );
      next();
    });
    
    app.set("view engine", "hbs");
    // app.use(express.static("/home/admin/SMS"));
    // app.use(express.static("/home/admin/assets"));
    
    // app.get('/', (req, res) => {
    //     res.render('SMS/dashboard.hbs');
    //   });
    
    //   app.get('/classes', (req, res) => {
    //     res.render('SMS/classes.hbs');
    //   });
    
    //   app.get('/inscription', (req, res) => {
    //     res.render('SMS/inscriptions.hbs');
    //   });
    
    app.post("/saveClasse", (req, res) => {
      var newClasse = new Classe({
        label: "hello",
        level: "level",
      });
      console.log("im gonna save the new class");
    
      newClasse.save((err, response) => {
        if (err) console.log(err);
        else console.log("RESPONSE" + response);
      });
    });

    enter image description here

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search