Как удалить ошибку циклической зависимости в монго?Я использую мангуст вместе с экспрессом - PullRequest
0 голосов
/ 24 июня 2018

Я получаю ошибку циклической зависимости.

Я установил соединения в файле index.js, установил модель в файле blogModel.js и мне требуются соединения в файле blogController.js. Когда я запускаю node index.js, я получаю вывод вплоть до db conn success, но затем появляется ошибка циклической зависимости.

Я пытался mongoose.model даже с оператором module.export, но ошибка остается.

Это файл схемы:

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:''
    },
    view:{
        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
    }
});

// no export statement here, mongoose.model handles that
//mongoose.model('Blog',blogSchema);
module.exports = mongoose.model('Blog',blogSchema)

this is the controller file
const express = require ('express');
const mongoose = require ('mongoose');
const shortid = require ('shortid');

//const BlogModel = mongoose.model("Blog");
const BlogModel = require('./../models/blogModel')
module.exports = { 
    helloworld: helloworld,
    printExample : printExample,
    testRoute : testRoute,
    testQuery : testQuery,
    testBody : testBody,
}

И, наконец, файл index.js:

//importing the module for use
const express = require('express');
const fs = require('fs');
const appConfig = require('./config/appConfig');
console.log(JSON.stringify(appConfig));

const blog = require('./routes/blogRoute.js'); 

//outputs in terminal -- console.log(appConfig);

//creating an instance of express
const app = express();

const bodyParser = require('body-parser');

//middlewares
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:false}));


let helloFunc = (req, res) => res.send('Hello World!');
app.get('/hello',helloFunc);
app.get('/',helloFunc);


//bootstrap route using routes folder
let routesPath = './routes';
fs.readdirSync(routesPath).forEach(function(file) {
    if(~file.indexOf('.js')){
        console.log(~file.indexOf('.js'));
        console.log("including the file");
        console.log(routesPath+ '/' +file)
        console.log(file);
        let route = require(routesPath + '/' + file);//why this way?
        //setting 
        route.setRouter(app);
    }
}); 

const mongoose = require('mongoose');

//path for model of db
let modelsPath = './models'

fs.readdirSync(modelsPath).forEach(function(file) {
    if(~file.indexOf('.js')){
        require(modelsPath +'/' + file);
        console.log(file);
    }
});

//const blogSchema = require('./models/blogModel')//
//blogSchema = blogSchemaRoute.blogSchema;


app.listen(appConfig.port, function(){
    console.log('Blog app listening on port 3000!');
    //creating mongodb connection
});

let db = mongoose.connect(appConfig.db.uri)//('mongodb://localhost:27017')


mongoose.connection.on('error',function(err){
    console.log("database connection error");
    console.log(err);
});

mongoose.connection.on('open',(err)=>{
    if (err){
        console.log("database connection error");
        console.log(err);
    }
    else{
        console.log("db conn success");
    }
});

Когда я запускаю node index.js, я получаю ошибку циклической зависимости:

C:\Users\IBM_ADMIN\Desktop\JS\5 Node\node_Basics>node index.js
{"port":3000,"allowedCorsOrigin":"*","environment":"dev","db":{"uri":"mongodb://
localhost:27017/blogDB"},"apiVersion":"/api/v1"}
-10
including the file
./routes/blogRoute.js
blogRoute.js
blogModel.js
Blog app listening on port 3000!
db conn success
C:\Users\IBM_ADMIN\Desktop\JS\5 Node\node_Basics\node_modules\mongoose\lib\utils
.js:452
        throw err;
        ^

Error: cyclic dependency detected
    at serializeObject (C:\Users\IBM_ADMIN\Desktop\JS\5 Node\node_Basics\node_mo
dules\bson\lib\bson\parser\serializer.js:333:34)
    at serializeInto (C:\Users\IBM_ADMIN\Desktop\JS\5 Node\node_Basics\node_modu
les\bson\lib\bson\parser\serializer.js:937:17)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...