我已阅读本主题中的问题。但是我无法找到解决方案,因为我认为我很好地定义了Schema。MongoDB referenceError:架构未定义
我models.js是这样的。
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema({
username: String,
password: String,
created_at: { type: Date, default: Date.now }
});
var todoSchema = new mongoose.Schema({
title: String,
done: Boolean,
priority: String,
deadLine: String,
masterDetailNote: String
});
mongoose.model('User', userSchema);
mongoose.model('Todo', todoSchema);
我的api.js是这样的。
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Todo = mongoose.model('Todo', todoSchema);
router.use(function(req, res, next) {
if (req.method === "GET") {
return next();
}
if (!req.isAuthenticated()) {
return res.redirect('#/login');
}
return next();
});
router.route('/posts')
//returns all todos
.get(function(req, res) {
Todo.find(function(err, data) {
if (err) {
return res.send(500, err);
}
return res.send(data);
});
})
//creates a new todo
.post(function(req, res) {
var todo = new Todo();
todo.title = req.body.title;
todo.done = req.body.done;
todo.priority = req.body.priority;
todo.deadLine = req.body.deadLine;
todo.masterDetailNote = req.body.masterDetailNote;
todo.save(function(err, post) {
if (err) {
return res.send(500, err);
}
return res.json(todo);
});
});
router.route('/posts/:id')
//egy bizonyos Todo-t hoz vissza
.get(function(req, res) {
Todo.findById(req.params.id, function(err, post) {
if (err)
res.send(err);
res.json(post);
});
})
//frissít egy todot
.put(function(req, res) {
Todo.findById(req.params.id, function(err, post) {
if (err)
res.send(err);
todo.title = req.body.title;
todo.done = req.body.done;
todo.priority = req.body.priority;
todo.deadLine = req.body.deadLine;
todo.masterDetailNote = req.body.masterDetailNote;
todo.save(function(err, post) {
if (err)
res.send(err);
res.json(post);
});
});
})
.delete(function(req, res) {
Todo.remove({
_id: req.params.id
}, function(err) {
if (err)
res.send(err);
res.json("deleted :(");
});
});
module.exports = router;
当我尝试启动服务器时,它显示错误消息。
var Todo = mongoose.model('Todo', todoSchema);
RefferenceError:todoSchema未定义。我不太明白,因为它的定义与userSchema完全相同。但是我可以使用userSyhema而没有任何错误。
在这种情况下,文件,错误消息是“MissingSchemaError:架构尚未注册模式‘待办事项’使用mongoose.model(名称。 ,架构)“。 –
首先加载模型文件。看到答案或部分@ R.Andris –
这应该解决它,但它没有找到它。错误:找不到模块./models/models.js。我不明白,那个文件夹确实存在。 –