RangeError: Превышен максимальный размер стека вызовов (MongoDB-mongoose) - PullRequest
0 голосов
/ 23 декабря 2019

Пытаясь сохранить данные пользователя в MongoDB Atlas , и я использую Postman для интерфейса API. req.body содержит запрос JSON, отправленный (POST) с использованием почтальона. JSON не удается передать бэкэнду, и почтальон выдает следующую ошибку:

RangeError-Максимальный размер стека вызовов превышен

Error message.

контроллеры / user.js

const User = require('../models/user')

exports.signup = (req,res)=>{
    console.log("req.body",req.body);
    const user = new User(req.body);
    user.save((err,user)=>{
        if(err){
            return res.status(400).json({
                err
            });
        }
        res.json({
            user
        });
    });


};

маршруты / user.js

const express=require('express')
const router=express.Router()


const { signup } = require("../controllers/user");

router.post("/signup",signup) 


module.exports = router;

приложение.js


const express=require('express')
const mongoose=require('mongoose')
require('dotenv').config() //use env variables


const morgan = require('morgan')
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')



//import routes
const userRoutes=require('./routes/user');
//app
const app=express()

//db

mongoose.Promise = global.Promise;
mongoose.connect(process.env.MONGO_URI,{
    useNewUrlParser:true,
    useCreateIndex: true,
    useUnifiedTopology: true
}).then(()=>{
    console.log('DB Connected');
}).catch(err=>console.log(err));

mongoose.connection.on('error',err=>{
    console.log(`DB connection error :${err}`)
})

//routes

app.use(morgan('dev'))
app.use(bodyParser.json())
app.use(cookieParser())

//routes middleware
app.use("/api",userRoutes);
const port=process.env.PORT || 8000;




app.listen(port,()=>{
    console.log(`Server is running on ${port}`);
});

error at vs-code terminal

1 Ответ

0 голосов
/ 23 декабря 2019

Если ваш пользовательский объект имеет циклические ссылки, res.json может завершиться ошибкой. Вы можете зачеркнуть ответ перед отправкой через amd selected properties. что-то вроде

res.send(JSON.stringify(user, ['firstname', 'lastname', 'age']))

...