gpt4 book ai didi

javascript - 缺少架构错误 : Schema hasn't been registered for model "User"

转载 作者:行者123 更新时间:2023-11-30 17:25:09 25 4
gpt4 key购买 nike

每当我启动我的应用程序时,我都会收到此错误:

--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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com