在我的控制器中,每当我写这篇文章时,
const blogModel = mongoose.model('Blog'),
它开始显示错误模式尚未注册
我的模型/blog.js的代码
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let blogSchema = new mongoose.Schema({
blogId: {
type: String,
unique: true
}
});
module.exports = mongoose.model('Blog', blogSchema);
我的控制器/blogs.js的代码 在这里,我创建了一个方法getAllblogs来获取所有博客
const express = require('express')
const mongoose = require('mongoose')
const blogModel = mongoose.model('Blog')
let getAllBlogs = (req,res) =>{
blogModel.find()
.select('-_v-_id')
.lean()
.exec((err,result) =>{
if(err){
console.log("error")
res.send(err)
}
else if(result == undefined || result == null || result == '')
{
console.log("no blog found")
res.send("no blog find")
}
else{
console.log("blog found")
res.send(result)
}
})
}
module.exports = {
getAllBlogs:getAllBlogs
}
这是错误跟踪
c: users dell basic node> node index.js
c: users dell basic node node_modules mongoose lib lib index.js:456 扔新的猫鼬。error.missingschemeerror(name(; ^ Missingschemaerror:尚未注册模型" ./../models/blog.js"。使用Mongoose.model(名称,模式( 在New MissingsChemeError(C: Users Dell basic Node node_modules Mongoose lib 错误 Missingschema.js:22:11( 在mongoose.model上 在对象。(c: users dell basicNode controllers blogs.js:3:29( 在Module._compile(内部/模块/cjs/loader.js:701:30( 在object.module._extensions..js(内部/模块/cjs/loader.js:712:10( 在Module.load(内部/模块/CJS/LOADER.JS:600:32( 在TryModuleLoad(内部/模块/cjs/loader.js:539:12( at function.module._load(内部/模块/cjs/loader.js:531:3( 在Module.Require(内部/模块/CJS/LOADER.JS:637:17( 在需要(内部/模块/cjs/helpers.js:22:18( 在对象。(c: users dell basic node routes doutes blog.js:3:22( 在Module._compile(内部/模块/cjs/loader.js:701:30( 在object.module._extensions..js(内部/模块/cjs/loader.js:712:10( 在Module.load(内部/模块/CJS/LOADER.JS:600:32( 在TryModuleLoad(内部/模块/cjs/loader.js:539:12( 在function.module._load(内部/模块/cjs/loader.js:531:3(
我的index.js的代码
const mongoose = require('mongoose')
const express = require('express')
const appConfig = require('./config/appConFig')
const fs = require('fs')
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')
const app = express() app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:false})) app.use(cookieParser())
let routesPath = './routes';
fs.readdirSync(routesPath).forEach(function(file) {
if(-file.indexOf('.js')){
console.log("finmding the path");
console.log(routesPath+'/'+file);
let route = require(routesPath+'/'+file);
route.setRouter(app);
} });
let modelsPath = './models';
fs.readdirSync(modelsPath).forEach(function(file) {
if(-file.indexOf('.js')){
let route = require(modelsPath+'/'+file);
} });
app.get('/', (req,res) => {
res.send('hello world i am here');
let db = mongoose.connect(appConfig.db.uri,{useMongoClient:true});
})
mongoose.connection.on('error' , function(err) {
console.log("database connection error")
console.log(err) });
mongoose.connection.on('open' , function(err) {
if(err)
{
console.log("database connection error")
console.log(err)
}
else{
console.log("connection success")
} }); app.listen(appConfig.port, () => console.log("listening onn "))
尝试从
更改行 const blogModel = mongoose.model('Blog')
to
const blogModel = require('../model/Blog.js')
在您的index.js文件中,在路由前将文件连接在文件顶部。
更新:
将您的index.js更改为
const mongoose = require("mongoose");
const express = require("express");
const appConfig = require("./config/appConFig");
const fs = require("fs");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
//const mod = require('./models/Blog')
const app = express();
mongoose.connect(appConfig.db.uri,{ useNewUrlParser: true });
mongoose.connection.on("error", function(err) {
console.log("database connection error");
console.log(err);
});
mongoose.connection.on("open", function(err) {
if (err) {
console.log("database connection error");
console.log(err);
} else {
console.log("connection success");
}
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
let routesPath = "./routes";
fs.readdirSync(routesPath).forEach(function(file) {
if (-file.indexOf(".js")) {
console.log("finmding the path");
console.log(routesPath + "/" + file);
let route = require(routesPath + "/" + file);
route.setRouter(app);
}
});
let modelsPath = "./models";
fs.readdirSync(modelsPath).forEach(function(file) {
if (-file.indexOf(".js")) {
let route = require(modelsPath + "/" + file);
}
});
app.get("/", (req, res) => {
res.send("hello world i am here");
});
app.listen(appConfig.port, () => console.log("listening onn "));
然后还将您的blogs.js控制器更改为
const express = require('express')
const mongoose = require('mongoose')
const blogModel = require('../models/Blog.js')
let getAllBlogs = (req,res) =>{
blogModel.find()
.select('-_v-_id')
.lean()
.exec((err,result) =>{
if(err){
console.log("error")
res.send(err)
}
else if(result == undefined || result == null || result == '')
{
console.log("no blog found")
res.send("no blog find")
}
else{
console.log("blog found")
res.send(result)
}
})
}
module.exports = {
getAllBlogs:getAllBlogs
}
我已经浏览了您的代码,并且发现您已经注册的模型很少,因此您需要在controllers/blog.js
const blogModel = require('../models/Blog')
和您的models/Blog.js
// importing mongoose module
const mongoose = require('mongoose')
const Schema = mongoose.Schema;
let blogSchema = new Schema(
{
blogId: {
type: String,
unique: true
},
title: {
type: String,
default: ''
},
description: {
type: String,
default: ''
},
bodyHtml: {
type: String,
default: ''
},
views: {
type: Number,
default: 0
},
isPublished: {
type: Boolean,
default: false
},
category: {
type: String,
default: ''
},
author: {
type: String,
default: ''
},
tags: [],
created: {
type: Date,
default: Date.now
},
lastModified: {
type: Date,
default: Date.now
}
}
);
module.exports = mongoose.model('Blog', blogSchema);
其次在您的index.js
中将连接移至顶部,而不是将其连接到路线回调中。
const mongoose = require('mongoose')
const express = require('express')
const appConfig = require('./config/appConFig')
const fs = require('fs')
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')
//const mod = require('./models/Blog')
let db = mongoose.connect(appConfig.db.uri,{useMongoClient:true});
const app = express()
您已经正确创建并导出了猫鼬模式。...但是您还没有正确导入它! 尝试此... const blog = require(" ./models/blog.js"(。您错过了"需要"关键字...否则一切都很好。祝你有美好的一天。
模型/blog.js首先需要在index.js内部。这样,Index.js就会意识到博客已加载到猫鼬中。然后,您可以在定义的地方需要控制器/blog.js
const blogModel = mongoose.model('Blog')
因为此代码是从猫鼬中获取"博客"的。