猫鼬没有定义

时间:2017-06-02 14:19:43

标签: node.js express mongoose

我正在关注this tutorial,它使用express和mongo创建待办事项列表。我收到以下错误:

body-parser deprecated undefined extended: provide extended option server.js:12:20
C:\todoListApi\api\controllers\todoListController.js:4
var Task = mongoose.model('Tasks');
           ^
ReferenceError: mongoose is not defined
    at Object.<anonymous> (C:\todoListApi\api\controllers\todoListController.js:4:12)
    ...

我尝试使用this post修复的body-parser deprecated错误无济于事(尽管它似乎更像是一个警告)。

猫鼬错误没有任何意义,因为猫鼬id直接在它之前定义:

var mongooose = require('mongoose').Mongoose,
    Task = mongoose.model('Tasks');

但它也在server.js中定义:

var express = require('express'),
    app = express(),
    port = process.env.PORT || 3000,
    mongoose = require('mongoose'),
    Task = require('./api/models/todoListModel'),
    bodyParser = require('body-parser');

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/Tododb');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.urlencoded(bodyParser.json()));

var routes = require('./api/routes/todoListRoutes');
routes(app);

app.listen(port);

console.log('todo list RESTful API server started on: ' + port)

我在原始教程中将其更改为添加.Mongoose,因为此帖说它可以正常工作。

1 个答案:

答案 0 :(得分:1)

正如Jérôme在其评论中所述,您的mongoose变量被定义为mongooose,但在整个代码中被访问为mongoose而没有第3个o。< / p>

对于正文解析器问题,您不要在bodyParser.json()中间件中包装bodyParser.urlencoded()bodyParser.json()正在返回自己的中间件函数,需要直接传递给快速服务器。

app.use(bodyParser.urlencoded({extended: true})
app.use(bodyParser.json())