[英]Why does my node express response returns empty?
建立一个注册系统,当表单中有错误时,我会收到正确的错误。
但是,当具有相同电子邮件的用户尝试注册“res.json({error: 'email exists'})”时,它会返回空的 {}。
我正在使用邮递员来测试响应。
响应为空的问题是什么?
router.post("/register", (req, res) => {
const { name, email, password, password2 } = req.body;
let errors = {};
if (!name) {
errors.name = "Name is required";
}
...
if (errors) {
return res.json(errors);
} else {
User.findOne({ email: email }).then(user => {
if (user) {
return res.json({ email: "email already exists" });
} else {
...
...
...
您使用错误的方式检查空对象,
if(errors) // This will evaluate to true always once the object is initialized
是的,因此作为响应返回空的错误对象 & 它根本不会检查电子邮件
您可以使用
if ( Object.keys(errors).length != 0 ) {
检查错误对象是否为空
实际上问题在你的 if 条件下,
您正在检查对象,不能直接( if(errors) )检查对象是否具有值。 它总是进入这个 if 条件。 如果您想正常工作,您必须检查是否包含任何键的对象。
您可以像这样使用 if 条件检查错误对象
if(Object.keys(errors).length > 0){
res.json(errors);
}
可能是if (errors)
返回包含 {} 的错误变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.