Я получаю ошибку циклической зависимости.
Я установил соединения в файле 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)