[英]RangeError: Maximum call stack size exceeded (MongoDB-mongoose)
尝试将用户详细信息保存到MongoDB Atlas 中,我使用 Postman 作为 API 接口。 req.body
包含使用邮递员发送 (POST) 的 JSON 请求。 JSON 无法传递到后端,Postman 抛出以下错误:
RangeError-超出最大调用堆栈大小
.
控制器/用户.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
});
});
};
路线/用户.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}`);
});
如果您的用户对象具有循环引用,则 res.json 可能会失败。 您可以在通过 amd 选择的属性发送响应之前对响应进行字符串化。 就像是
res.send(JSON.stringify(user, ['firstname', 'lastname', 'age']))
在您的项目中转到模型文件夹,然后在user.js
中user.js
:
userSchema.virtual("password")
.set(function(password){
this._password=password;
this.salt=uuidv4()
this.encry_password=this.securePassword(password)
})
.get(function(){
return this._password;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.