2016-11-22 7 views
1

私はNodeとMongoDBを初めて使用しています。私はMongooseを使ってMongoのスキーマを作成しています。1 of 2 Mongooseスキーマが初期化されない

var mongoose = require('mongoose'); 

var postSchema = new mongoose.Schema({ 
username: String, 
text: String, 
created_at: {type: Date, default: Date.now} 
}); 

var userSchema = new mongoose.Schema({ 
username: String, 
password: String, 
created_at: {type: Date, default: Date.now} 
}); 





//declaring a model which has schema userSchema 
mongoose.model("User", userSchema); 
mongoose.model("Post", postSchema); 

以下のように私はこの問題は私のユーザー・スキーマが初期化され、正常に動作しつつあるということである1 models.jsファイル内の2つのスキーマを作成しました。しかし、投稿スキーマは問題です。 このサーバの起動時に、私は取得エラーです:

C:\Users\rohit\Desktop\projects\chirp\module4\start\node_modules\mo 
     throw new mongoose.Error.MissingSchemaError(name); 
      ^
MissingSchemaError: Schema hasn't been registered for model "Post". 

ここでは、実際にデータベースがここ

var express = require('express'); 
var router = express.Router(); 
var mongoose = require('mongoose'); 
var Post = mongoose.model('Post'); 
... 
router.route('/posts') 
.get (function(req, res){ 

    Post.find(function(err, data){ 
     if(err){ 
      return res.send(500, err) 
     } 

     return res.send(data) 
    }) 

}) 

を照会するために、ポストスキーマを呼び出しapi.jsから私のスニペットは、コードされていますユーザー・スキーマを使用し、それはあなたがあなたのmodels.jsであなたのモデル(ユーザおよびポスト)をロードされていない細かい

var LocalStrategy = require('passport-local').Strategy; 
var bCrypt = require('bcrypt-nodejs'); 
var mongoose = require('mongoose'); 
var User = mongoose.model('User'); 
var Post = mongoose.model('Post'); 
module.exports = function(passport){ 

// Passport needs to be able to serialize and deserialize users to support  persistent login sessions 
passport.serializeUser(function(user, done) { 
    console.log('serializing user:',user._id); 
    return done(null, user._id); 
}); 

passport.deserializeUser(function(id, done) { 
    User.findById(id, function(err, user){ 
     if (err){ 
      return done(err, false) 
     } 

     if(!user){ 
      return done('User not found', false) 
     } 

     return done(user, true); 
    }) 


}); 

答えて

0

を働く私のauth.jsファイルから抜粋。 はvar mongoose = require('mongoose');後に次の行を追加します。

var User = require('./models/user.js'); <-- type your user.js model path here 
var Post = require('./models/post.js'); <-- type your post.js model path here 
+0

をしかし、なぜそれがユーザー・スキーマのためともポストスキーマのために働くのでしょうか? – rsisaudia

+0

それは変です。 http://stackoverflow.com/questions/20832126/missingschemaerror-schema-hasnt-been-registered-for-model-userを見てください。 – deChristo

関連する問題