2014-11-05 3 views
2

방금 ​​의미있는 스택을 배우려고하고 thinkster.io에 대한 자습서를 시작했으며 서버로 작업해야하는 부분을 만들었습니다 - 정직하게, 나는 약간의 개념에 관해서 아직 많은 어려움이있다, 내가 끌어 들이고있는 약간 그러나 대다수는 아직도 다소 잃어 버렸다. 그래서 너희들 도움을 청한다.AngularJS 스키마가 'Post'모델에 등록되지 않았습니다

첫 번째 파일 App.js :

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

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

var mongoose = require('mongoose'); 

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

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(__dirname + '/public/favicon.ico')); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: err 
     }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: {} 
    }); 
}); 


module.exports = app; 

두 번째 파일 : 하는 index.js

var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 
router.get('/', function(req, res) { 
    res.render('index', { title: 'Express' }); 
}); 

module.exports = router; 

var mongoose = require('mongoose'); 
var Post = mongoose.model('Post'); 
var Comment = mongoose.model('Comment'); 

router.get('/posts', function(req, res, next) { 
    Post.find(function(err, posts){ 
    if(err){ return next(err); } 

    res.json(posts); 
    }); 
}); 

router.post('/posts', function(req, res, next){ 
    var post = new Post(req.body); 
    post.save(function(err, post){ 
     if(err){return next(err);} 

     res.json(post); 
    }); 
}); 

세 번째 파일, 내가 코멘트 게시물에 대한 모델을 생성 :

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); 

Comments.js :

var mongoose = require('mongoose'); 

var CommentSchema = new mongoose.Schema({ 
    body: String, 
    author: String, 
    upvotes: {type: Number, default: 0}, 
    post: { type: mongoose.Schema.Types.ObjectId, ref: 'Post' } 
}); 

mongoose.model('Comment', CommentSchema); 

나는 모델 "포스트"에 등록되지 않은 나에게 스키마의 오류를 제공 웹을 실행할 수있는 NPM 시작을 수행 할 때. 도와 주시겠습니까? 미리 감사드립니다. 의 순서

답변

9

체크 아웃 app.js 파일에 필요 라인 필요할

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

전에

require('./models/Posts'); 

을 가지고해야합니다.

+0

이것은 나를 위해 일했습니다. Is this가 작동하는 이유에 대한 간단한 설명을 요청하는 것이 너무 어렵습니까? :) –

+1

@pipo_dev : ./routes/index.js 파일은 'Post'모델을 사용하기 때문에 모델이 만들어지기 전에 필요하지 않아야합니다 (자습서의 PostSchema에서). – VinceOPS

관련 문제