簡體   English   中英

來自 nodejs 應用程序 mongoose.save() 塊並且什么都不做?

[英]from nodejs app mongose.save() block and doesn't do anything?

我正在嘗試使用非常基本的 MongoDB 方法是使用 mongoose 將文檔保存在數據庫中。

1.我在 centos 7 中安裝了我的 MongoDB

2.在 Mongo shell 上創建一個數據庫,使用:使用 mydatabase 並像往常一樣在其中插入一個文檔。

3.安裝 mongoose 並在我的 nodejs 應用程序和 MongoDB 之間建立連接:

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

4. 測試連接,一切正常:

db.once('open', () => {
  console.log('DB Connected');
});
  1. 正常導入 model 模式:

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

  1. 嘗試像這樣添加新文檔:
var newClasse = new Classe({
     label: 'hello',
     level: 'level',
   });
newClasse.save()

我的 Model 是:

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 };

服務器.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);
  });
});

問題是:什么都沒發生。 沒有插入任何文檔,也沒有錯誤。 請給我建議好嗎?

PS:我正在嘗試從沒有 HTTPS 的 HTTP 服務器請求。

這會影響我的請求並阻止保存到數據庫嗎?

結果:請點擊查看結果圖片

由於沒有為 mongoose 連接和保存 function 的位置提供整個文件,假設您的結構正確,我給出了我的答案。 我能夠做到這一點,

架構(與您的相同):

 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 插入:

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();
  });

更新:

服務器.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); }); });
在此處輸入圖像描述

我發現了這個問題,但我不明白為什么會這樣。 第一個結構是:

**

  • 數據庫模型
    • 類.js
  • 服務器
    • server.js**

現在的結構:

**

  • 數據庫模型

    • 類.js
  • 服務器.js

**

我從那個文件夾中找出服務器並且一切正常......??

為什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM