尚未注册模型错误显示



在我的控制器中,每当我写这篇文章时,

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

因为此代码是从猫鼬中获取"博客"的。

相关内容

最新更新