2017-06-11 67 views
0

當我試圖填充,這個錯誤來了: 「MissingSchemaError:架構尚未註冊模式」架構尚未註冊的錯誤人口

我的模型: /模型/課程。 JS

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var User = require('./user') 

var courseSchema = Schema({ 
    courseName:String, 
    price:Number, 
    type:String, 
    _offeredBy:{type:Schema.Types.ObjectId,ref:User} 
}); 

module.exports = mongoose.model("Course",courseSchem 

型號/ user.js的

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var bcrypt = require('bcrypt-nodejs'); 
var findOrCreate = require('mongoose-findorcreate') 
var Course = require('./course') 

var userSchema = Schema({ 
    email:{type:String}, 
    password:{type:String}, 
    courseOffered:[{type:Schema.Types.ObjectId,ref:Course}] 
}); 


module.exports = mongoose.model('User',userSchema); 

路線/ index.js

var Course = require('../models/course'); 
var User = require('../models/user'); 
var express = require('express'); 
var router = express.Router(); 

router.get('/user/profile',isLoggedIn,function(req,res,next){ 
res.render('user/profile',{csrfToken:req.csrfToken(),message:""}) 
}); 
router.post('/user/profile',isLoggedIn,function(req,res,next){ 
var courseInfo = req.body; 
var newCourse = new Course(); 
newCourse.courseName = courseInfo.coursename; 
newCourse.price = courseInfo.price; 
newCourse.type = courseInfo.type; 
newCourse._offeredBy = req.user; 
newCourse.save(function(err,result){ 
if(err){ 
    res.redirect('/user/profile'); 
} 
}); 
Course 
.findOne({courseName:courseInfo.coursename}) 
.populate('_offeredBy') 
.exec(function(err,course){ 
if(err){ 
    res.redirect('/user/profile'); 
} 
}); 

}); 

課程正在保存在數據庫中,但錯誤是由於兜售而出現的。我不寫app.js,mongodb連接是在app.js文件中進行的。

+0

這就是你的實際代碼的樣子? 'module.exports = mongoose.model(「Course」,courseSchem'。你發佈的代碼缺少一些東西,但考慮到錯誤,至少在實際代碼中可能有拼寫錯誤 –

+0

不,這是發佈時的錯誤, module.exports = mongoose.model(「課程」,courseSchema); –

+0

請更正你的問題張貼並再次檢查了命名的錯誤建議你實際上有一個架構名稱拼寫錯誤。因此它沒有註冊。 –

回答

0

您的模型試圖加載另一個模型,然後它自己嘗試加載另一個模型。

在你的模式,你應該設定裁判爲這樣的字符串:

var courseSchema = Schema({ 
    courseName: String, 
    price: Number, 
    type: String, 
    _offeredBy: { type:Schema.Types.ObjectId, ref: 'User' } 
}); 
var userSchema = Schema({ 
    email: String, 
    password: String, 
    courseOffered: [{ type: Schema.Types.ObjectId, ref: 'Course' }] 
}); 

然後,您可以刪除線,要求每個模型文件中的其他型號。在使用之前,它們都被加載到'routes/index.js'中。

注意:newCouse.save()是異步的,因此您應該在'save'回調中爲您提供Course.findOne()。populate()。

相關問題