Javascript 新对象在expressjs post请求中作为空对象返回
这个问题快把我逼疯了 此路由的目的是创建或登录用户,我已成功创建了新用户,但我在将对象作为响应发送时遇到了问题,但所得到的只是空对象 我尝试了Javascript 新对象在expressjs post请求中作为空对象返回,javascript,node.js,express,postman,Javascript,Node.js,Express,Postman,这个问题快把我逼疯了 此路由的目的是创建或登录用户,我已成功创建了新用户,但我在将对象作为响应发送时遇到了问题,但所得到的只是空对象 我尝试了console.log() 这是应用程序设置 // middleware setup app.use(cors()); app.use(express.urlencoded({extended: true})); app.use(express.json()); app.use('/', usersRoute); 我的代码是这样的,它不是完整的代码,但它
console.log()
这是应用程序设置
// middleware setup
app.use(cors());
app.use(express.urlencoded({extended: true}));
app.use(express.json());
app.use('/', usersRoute);
我的代码是这样的,它不是完整的代码,但它显示了代码失败的地方
router.post('/register', async (req, res) => {
const enteredUser = req.body;
// Validate entered user information
const { error } = validateUser(enteredUser);
if (error) return res.status(400).send(error);
try {
// Make sure user does not exist
const isAlreadyUser = await User.findOne({
username: enteredUser.username
});
if (isAlreadyUser) {
const err = new Error('already user');
return res.status(201).send({
isAlreadyUser,
err
});
}
// Hash the password
const salt = await bcrypt.genSalt(10);
const hashed = await bcrypt.hash(enteredUser.password, salt);
console.log(salt, hashed);
// Create new model instance
const newUser = new User({
username: enteredUser.username,
password: hashed,
isCustomer: enteredUser.isCustomer
});
// Save new user to db
await newUser.save();
// generate token
const token = newUser.genToken();
console.log(token);
// send token to front-end
return res.status(200).send(token);
} catch (error) {
return res.status(400).send(error);
}
})
答案是这样的
{
"isAlreadyUser": {
"isCustomer": true,
"_id": "5fb0df0c7f3bb4069ed32615",
"username": "Raffi2",
"password": "$2b$10$tlHJGtax75mR4L3gG.cJhuIfy/t7IEKX4n49kIElZ41k7jZAe/2rO",
"__v": 0
},
"err": {}
}
问题发生在两种对象类型上,如Error
和jsonwebtoke
有人能帮忙吗?res.status(201).send
调用将在属性err
中返回一个空对象,因为new Error('ready user')
的返回对象的属性不可枚举,响应为JSON.stringized
参考: