每当我启动我的应用程序时,我都会收到此错误:
--MissingSchema 错误:尚未为模型“用户”注册架构--
我正在学习 Simon Holmes 的“Mongoose for Application Development”一书中的教程。 我在第 5 章“与数据交互 - 创建”
这是我的代码:
应用程序.js:
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, project = require('./routes/project')
, http = require('http')
, path = require('path');
db.js:
//Creating the Application Schemas:
//====================================
//User Schema:
//===============
var userSchema = new mongoose.Schema({
name: String,
email: {type: String, unique:true},
createdOn: { type: date, default: date.now },
modifiedOn: Date,
LastLogin: Date
});
//Build the User Model:
//===========================
mongoose.model( 'User', userSchema );
用户.js:
var mongoose = require("mongoose");
var User = mongoose.model( 'User' );
导致的错误:
throw new mongoose.Error.MissingSchemaError(name);
^
MissingSchemaError: Schema hasn't been registered for model "User".
Use mongoose.model(name, schema) at Mongoose.Model (C:\Users\New\Desktop\mongoose_pm_app\
mongoosepm\node_modules\mongoose\lib\index.js.311.13)
at Object. <anonymous> (C:\Users\New\Desktop\mongoose_pm_app\mongoosepm\routes\user.js:2:21)
atModule._compile (module.js:456:26)
atObject.Module._extensions..js (module.js:474:10)
atModule.load (module.js:356:32)
at Function.Module._load (module.js:364:17)
at require (module.js:380:17)
at Object <anonymous> (C:\Users\New\Desktop\mongoose_pm_app\mongoosepm\app.js:8:12)
at Module._compile (module.js:456:26)
25 June 19:52:55 - [nodemon] app crashed waiting for file changes before starting...
我对 mongoose 和 mongodb 还很陌生。 我浏览了书籍的勘误表页面 检查我是否输入错误,但它与此处完全相同。
我也试过从PACKT下载示例代码,示例代码 看起来一样。
如有任何帮助,我们将不胜感激。 谢谢。
最佳答案
您需要在某个地方require
您的 db.js 文件,否则其中的代码将永远不会运行,并且永远不会注册架构。
此外,我建议您在 User.js 中定义您的用户架构并将模型添加到导出,如下所示:
用户.js
//User Schema:
//===============
var userSchema = new mongoose.Schema({
name: String,
email: {type: String, unique:true},
createdOn: { type: date, default: date.now },
modifiedOn: Date,
LastLogin: Date
});
//Build the User Model:
//===========================
var User = mongoose.model( 'User', userSchema );
//Exports
//=======
exports = User;
这允许您在别处只require
文件来获取对 User 模型的引用(而不是必须通过 mongoose.model
检索它)。例如:
var User = require('User');
// ...
var fred = new User({ ... }); // create a new user
fred.save(function (err, user) { ... });
我没有读过你提到的那本书,所以我不确定是否有充分的理由在一个文件中定义你的所有模式(这是你使用 db 的方向) .js)。据我所知,每个文件有一个模式/模型更为常见。
关于javascript - 缺少架构错误 : Schema hasn't been registered for model "User",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24420995/