我已閱讀本主題中的問題。但是我無法找到解決方案,因爲我認爲我很好地定義了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。我不明白,那個文件夾確實存在。 –