类型错误:将 mongodb/mongoose 的循环结构转换为 JSON


var express = require("express")
let PersonModel = require('./PersonModel')
let mongodbConnected=require('./MongodbConnect')
var app =express()
var bodyparser=require("body-parser")
const { format } = require("path")
const { count } = require("console")
const { countDocuments } = require("./PersonModel")
const { exec } = require("child_process")
const { get } = require("http")
const { ALL } = require("dns")
app.use(bodyparser.urlencoded({extended:false}))
app.get('/',function(req,res){
res.sendFile('Person.html', { root: __dirname });
})
app.get('/about',function (req,res){
res.send("This is a simple express application using mongodb express html and mongoose")
PersonModel.countDocuments().exec()
.then(count=>{
console.log("Total documents Count before addition :", count)
}) .catch(err => {
console.error(err)
})

})
app.post('/add', function(req,res){
Pname=req.body.empname
console.log('Pname',Pname)
PAge=req.body.Age
PGender=req.body.gender
PSalary=req.body.salary

const doc1 = new PersonModel(
{
name:Pname,age:33,Gender:PGender,Salary
:PSalary}
)

doc1.save(function(err,doc){
if (err) return console.error(err)
else
console.log("doc is added ",doc)
//res.send("Record is added"+doc)
res.send({
'status':true,
'Status_Code':200,
'requested at': req.localtime,
'requrl':req.url,
'request Method':req.method,
'RecordAdded':doc});
}
)
})
app.post('/findperson', function(req,res){
PAge=req.body.Age
console.log("Page",PAge)
PersonModel.find({age:{$gte:PAge}})
// find all users

.sort({Salary: 1}) // sort ascending by firstName
.select('name Salary age')// Name and salary only
.limit(10) // limit to 10 items
.exec() // execute the query
.then(docs => {
console.log("Retrieving records ",docs)
res.send(docs)
})
.catch(err => {
console.error(err)})

})
app.post('/delete', function(req,res){
Pgender=req.body.gender
PersonModel.findOneAndDelete({Gender:Pgender }
).exec()
.then(docs=>{
console.log("Deleted")
console.log(docs); // Success
}).catch(function(error){
console.log(error); // Failure
});
})
app.post('/update', function(req,res){
Pname=req.body.empname
Pnewname=req.body.newname
PnewAge=req.body.newage
PersonModel.findOneAndUpdate({ name: Pname },{"$set":{name:Pnewname,age:PnewAge}}).exec()
.then(docs=>{
console.log("Update for what i get is ",Pname
,Pnewname,PnewAge)
console.log(docs); // Success
}).catch(function(error){
console.log(error); // Failure
});
})
var docnum=PersonModel.countDocuments(ALL)
app.post('/count', function(req, res){
res.send('Total number of documents: ', docnum)
})

app.listen(5000,function(){
console.log("Server is running on the port 5000")
})

你好。 第一次在stackoverflow上发帖,不知道要发布什么样的信息,请告诉我。 我试图制作一个页面(/count)来简单地显示文档的数量。我尝试了不同的代码,但没有任何效果。此错误不断出现"类型错误:将循环结构转换为JSON"。

这是学校作业,所以代码是由老师给我的,我必须添加一个 POST 方法来添加一个显示文档总数的页面。

有什么想法吗? 谢谢。

循环结构不是关于mongo而是JS如何读取JSON对象。

例如,如果您有此对象:

var object = {
propA: "propA",
propB: object
}

当JS尝试反序列化JSON对象时,将处理:一个对象包含再次包含该对象的对象,并且一次又一次...这是一种循环依赖。

不仅有一个对象本身,还有更多对象:

var objectA = {
propA: objectB
}
var objectB = {
propA: objectA
}

是同样的情况。

使用node.js您可以使用util.inspecet(),当发现循环依赖关系时,它会自动显示[Circular]

您可以像这样使用:

var util = require('util')
console.log(util.inspect(objectA))