[解決済み] Mongoose Schema がモデルとして登録されていません。
2022-02-05 01:27:51
質問
平均値スタックを学習しているのですが、以下の方法でサーバーを起動しようとすると、エラーが発生します。
npm start
という例外が発生するんです。
schema hasn't been registered for model 'Post'. Use mongoose.model(name, schema)
以下は /models/Posts.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)
そして、これがマングースの初期化を含むapp.jsのコードです。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/news');
require('./models/Posts');
require('./models/Comments');
を行の前に置く。
app.use('/', routes);
解決方法は?
モデルのエクスポートの問題ではありません。私も同じ問題を抱えていました。
本当の問題は、モデルに対するrequire文が
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/news');
require('./models/Posts');
require('./models/Comments');
は、ルーティングの依存関係の下にありました。mongoDB の依存関係を routes の依存関係の上に移動させるだけです。このような感じになります。
// 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();
関連
-
[解決済み】mongoError: トポロジーが破壊されました
-
[解決済み] 再インストールを繰り返しても、npm run でモジュール 'sass' が見つからない。
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み] (node:63208) DeprecationWarning: collection.ensureIndex は非推奨です。代わりにcreateIndexesを使用してください [重複]。
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】Mongooseで配列の値を更新する方法
-
[解決済み】POSTできない/expressを使用するとエラーが発生する
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] Mongoose Schema がモデルとして登録されていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 再インストールを繰り返しても、npm run でモジュール 'sass' が見つからない。
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】Mongooseで配列の値を更新する方法
-
[解決済み】Heroku + node.jsのエラー(Webプロセスが起動後60秒以内に$PORTにバインドできなかった)。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] エラーです。Expressでビューの検索に失敗しました
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。