javascript - MissingSchemaError : Schema hasn't been registered for model "User"

标签 javascript node.js express mongoose

在我的 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/

相关文章:

javascript - 在 Node Express 应用程序中检测 TLS 版本?

javascript - Angularjs分页刷新问题

javascript - TS 中 "every"函数的 TypeError

javascript - DOM className 属性在 setTimeout() 中不起作用

Node.js Sequelize object "not associated"当它是

node.js - 无法访问中间件内 app.use() 的 req.params

javascript - 使用映射或任何其他方法转换数组 - javascript

node.js - 如何在 Ubuntu 18.04 32 位上安装 node.js?

javascript - mocha-webpack 找不到测试

node.js - Mongoose - 保存字符串数组