当前位置: 首页 > 知识库问答 >
问题:

未注册架构以显示模型错误

苍轶
2023-03-14

在我的控制器中,

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

我的controller/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
}

null

C:UsersDellBasicNode&>节点index.js

null

我的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 "))

共有3个答案

常坚
2023-03-14

您已经正确地创建并导出了猫鼬模式。。。。。但是您没有正确地导入它!试试这个。。。const blog=require(./models/blog.js)。您错过了'require'关键字。。。。否则一切正常。祝你今天愉快。

邹华池
2023-03-14

我已经检查了您的代码,发现了一些问题,因为您已经注册了模型,那么您将需要在 中要求它

const blogModel = require('../models/Blog')

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

null

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()
宋铭
2023-03-14

尝试从

null

在index.js文件中,将mongoose.connect移动到文件顶部的routes之前。

更新:

将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
    }
 类似资料:
  • 我知道以前有人问过这个问题,但我找不到适合我的问题。我正在使用mongo为我的项目创建模式并创建路由,但由于某些原因,它一直给我一个错误。 扔新的猫鼬。错误。MissinSchemaError(名称);^MongooseError[MissinSchemaError]:模式尚未注册为模型“项目”。使用mongoose.model(名称,模式)在Mongoose.model(C:\用户\samib\

  • 我有一个docker容器运行AWS弹性容器服务(Fargate)中的confluentinc/cp模式注册表:5.5.0。只有一个容器正在运行。通过该模式注册表获取当前注册模式的API调用正在工作(例如,

  • 这里是我的docker容器: 我的制作人(用Kolin写成) 我的Avro架构: 状态:打开 消息:发送的邮件。 所以我把它发送给KAFKA,在connect(jdbc sink postgres)中,我只将消息(客户端)的属性作为Fields.whitelist而不获得命令id或状态。 4-https://github.com/rodrigodevelms/kafka-registry/blob

  • 我想注册一个Avro模式,它在模式注册表上引用另一个Avro模式。 首先,我注册了以下基本Avro模式: 如果我尝试注册以下Avro架构,该架构引用“客户端”属性中的基本架构,则操作失败并出现错误422 这个问题似乎与指定自定义类型字段有关。 任何想法如何添加自定义类型,同时注册相关的模式在模式注册表?

  • 问题内容: 我正在学习平均堆栈,当我尝试使用启动服务器时 我有一个例外说: 这是我在/models/Posts.js中的代码 如我所见,应该为模型“ Post”注册架构,但是什么原因可能导致引发异常? 提前致谢。 编辑: 这是异常错误 这是带有猫鼬初始化的app.js代码: 前行: 问题答案: 模型导出不是问题。我遇到过同样的问题。 真正的问题是需要模型声明 低于路线依赖关系。只需将mongoDB

  • 我试图使用Avro模式向我的经纪人发送消息,但“我总是收到错误: 2020-02-01 11:24:37.189[nioEventLoopGroup-4-1]错误应用程序-未经处理:POST-/api/orchestration/org。阿帕奇。Kafka。常见的错误。SerializationException:注册Avro架构时出错:io导致“字符串”。汇合的。Kafka。阴谋论。客户Rest