如何解决Express错误:TypeError:将循环结构转换为JSON



我对创建注册和显示注册用户列表的表达和角度很陌生。我正在使用一个函数来注册用户并将数据保存在mango数据库中——执行成功(我可以在mongo中看到注册的用户,并在poster中工作(。现在我想使用另一个函数api用户检索所有注册的用户,但出现了一个错误。

我的代码

const User = require('../models/user')
router.post('/register', (req, res) => {
let userData = req.body
let user = new User(userData)

user.save((error, registeredUser) => {
if (error){
console.log(error)
}
else 
{
let payload= { subject: registeredUser._id}
let token = jwt.sign(payload, 'secretkey')
res.status(200).send({token}) 
}
})
})

检索用户功能

router.get('/user', (req, res) => {
let users = User.find()
res.json(users)
})

用户模式模型

const mongoose = require('mongoose')
const Schema = mongoose.Schema
const userSchema = new Schema({
email: String,
password: String
})
module.exports = mongoose.model('user', userSchema, 'Users')

---错误---

TypeError: Converting circular structure to JSON
--> starting at object with constructor 'NativeTopology'
|property 's' -> object with constructor 'Object'
|property 'sessionPool' -> object with constructor 'ServerSessionPool'
--- property 'topology' closes the circle
at JSON.stringify (
<anonymous>
)

您正在进行一个db调用,这将是一个异步操作。so res.json(users(行不会等待db响应。

router.get('/user', (req, res) => {
let users = User.find()
res.json(users)
})

解决方案

router.get('/user', async (req, res) => {
let users = await User.find({})
res.json(users)
})

相关内容

最新更新