尽管在app.js中定义并通过npm安装,但仍收到“ ReferenceError:未定义的猫鼬”

时间:2019-01-09 00:48:10

标签: node.js mongoose referenceerror

我正在构建一个非常简单的工具,该工具会将表单的内容发布到MongoDB,然后再构建一个GET请求以将其撤回。它起初是按照教程进行的,当我开始构建功能更强大的前端时,它就已经消失了,但是我无法获得后端功能的这一方面。

下面是我的代码,您可以清楚地看到猫鼬被定义为变量。

var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');});
app.use(express.static(__dirname + '/'));

var port = 3000;
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

var mongoose = require('mongoose');
global.Promise = mongoose.Promise
console.log(console.log(mongoose.connection.readyState));

mongoose.connect("mongodb://localhost:27017/formnote");

var nameSchema = new mongoose.Schema({
 srNumber: String,
 summary: String,
 notePad: String,
});


var Notes = mongoose.model("Notes", nameSchema);

app.get("/", (req, res) => {
     res.sendFile(__dirname + "/index.html");
});

app.post("/addnote", (req, res) => {
    var myData = new Notes(req.body);
    myData.save()
        .then(item => {
            res.send("Notes saved to database");
        })
        .catch(err => {
            res.status(400).send("Unable to save to database");
        });
});

app.listen(port, () => {
    console.log("Server listening on port " + port);
});

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

只是在黑暗中开枪。但是在使用猫鼬全球承诺时会遇到问题 在新的猫鼬版本中,您用来连接到数据库的实现已过时,并已被该实现取代

所以不是这些行来连接到数据库,

global.Promise = mongoose.Promise
console.log(console.log(mongoose.connection.readyState));

mongoose.connect("mongodb://localhost:27017/formnote");

使用它并尝试

mongoose.connect('mongodb://localhost:27017/formnote',{useNewUrlParser:true})
    .then(function(){
        console.log('mongoDB connected');
    })
    .catch(function(){
        console.log('Error :');
    }) 

答案 1 :(得分:0)

我对代码进行了一些重组,以便在配置API本身时可以进行更多的组织,并且在此过程中,我的要求也从var更改为const。这似乎已经解决了这个问题