在我的 models/user.js
文件中:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
(define schema)
});
...
(save user)
...
(check password)
...
mongoose.model('User', userSchema);
在我的 router/index.js
中,我有:
var mongoose = require('mongoose');
var User = mongoose.model('User');
引发错误:
MissingSchemaError: Schema hasn't been registered for model "User".
但是,如果在 user.js
中,我会这样做(在最后一行)
module.exports = mongoose.model('User', userSchema);
在 index.js
中我执行 var User = require('../models/User');
,然后一切正常。
但它不应该,因为在 config/pass.js
我正在做 var User = mongoose.model('User');
它工作完美。
require('../models/User');
语法不适用于 Ubuntu,但适用于我的 Mac。
我该怎么办?我如何解决它?我查看了大量示例应用程序,包括 MEAN但没有什么真正有用的。
最佳答案
我在尝试 MEAN 教程时遇到了同样的问题。
经过一番研究,我发现在 app.js 中,如果我将 require("./models/User") 放在 var routes = require("./routes/index") 之前,那么它可以工作。
像这样:
mongoose.connect("mongodb://localhost/news");
require("./models/Posts");
require("./models/Comments");
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
希望答案会有所帮助!
关于javascript - MissingSchemaError : Schema hasn't been registered for model "User",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832126/