我正在学习平均堆栈,当我try 使用

npm start

我得到一个例外,说:

schema hasn't been registered for model 'Post'. Use mongoose.model(name, schema)

这是我的代码/模型/帖子.js

var mongoose = require('mongoose');

var PostSchema = new mongoose.Schema({
    title: String,
    link: String, 
    upvotes: { type: Number, default: 0 },
    comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }]
});

mongoose.model('Post', PostSchema);

正如我所看到的,应该为模型"Post"注册模式,但是什么可能导致抛出异常呢?

提前谢谢.

编辑:以下是异常错误

/home/arash/Documents/projects/personal/flapper-news/node_modules/mongoose/lib/index.js:323
  throw new mongoose.Error.MissingSchemaError(name);
        ^
MissingSchemaError: Schema hasn't been registered for model "Post".
Use mongoose.model(name, schema)

这是应用程序.带有mongoose初始化的js代码:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/news');
require('./models/Posts');
require('./models/Comments');

排队前:

app.use('/', routes);

推荐答案

这不是模型导出的问题.我也有同样的问题.

真正的问题是需要对模型进行说明

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/news');
require('./models/Posts');
require('./models/Comments');

在路径依赖项之下.只需将mongoDB依赖项移到路由依赖项之上.它应该是这样的:

// MongoDB
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/news');
require('./models/Posts');
require('./models/Comments');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

Node.js相关问答推荐

错误:找不到模块';/var/apps/前端/bash';

try 使用Express和连接池将数据插入MySQL数据库时出现拒绝访问错误

聚合操作不返回任何具有mongoose模式的内容

使用参考中断Mongoose模型-Node.js

如何在 ElectronJS 中播放音频文件

动态设置元数据,无需重复请求 NextJS 13

表达 js 错误处理程序在第一个之后被忽略

如何在mongoose 聚合中执行全文搜索

Next.js 在我的电脑上没有构建错误,但它们在使用 Vercel 部署时发生

为什么当我try req.logout() 时出现此错误?

多个 Axios 请求合并

在 Express.js 中迭代子文档数组

即使部署成功,也不会触发 Firebase 函数来填充 Firestore 集合.为什么?

baseurl64 缓冲区解码

如何在 Node.js 中逐字节读取二进制文件

安全沙箱并执行用户提交的 JavaScript?

判断一个数组中的每个元素是否都在第二个数组中

User.findOrCreate 函数是做什么的,什么时候在Passport 中调用它?

Socket.IO 连接用户数

yarn 和 npm 的主要区别是什么?