Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript警报响应:[对象响应]为res.json_Javascript_Node.js - Fatal编程技术网

javascript警报响应:[对象响应]为res.json

javascript警报响应:[对象响应]为res.json,javascript,node.js,Javascript,Node.js,我在进行简单的登录/注册时遇到了一些困难,但是fetch-sign-up和login中的alert()都显示了response:[对象响应]。我尝试console.log(JSON.stringify(res.JSON());但这并没有在控制台中显示任何内容。任何帮助都将不胜感激 const express = require("express"); const router = express.Router(); const db = require("../..

我在进行简单的登录/注册时遇到了一些困难,但是fetch-sign-up和login中的alert()都显示了response:[对象响应]。我尝试console.log(JSON.stringify(res.JSON());但这并没有在控制台中显示任何内容。任何帮助都将不胜感激

const express = require("express");
const router = express.Router();
const db = require("../../mongo").db();
const validate = require("../../validation");
const { password } = require("../../validation");

router.post("/register", (req, res) => {
res.json({success: true})
 console.log(JSON.stringify(req.body));
  let { username, password } = req.body;
  let err = validate.username(username);
  if (err) throw err;
  err = validate.password(password);
  if (err) throw err;
  db.collection("users").find({ username: username }),
    function (err, username) {
      if (err) {
        throw err;
      }
      if (username) {
        console.log(username);
        console.log("Username in use!");
      } else {
        console.log("Not in use!");
        db.collection("users").insertOne({
          username: username.value,
          password: password.value,
        });

      }
    };
    
});

router.post("/login", (req, res) => {
  console.log(JSON.stringify(req.body));
  let { username, email, password } = req.body;
  db.collection("users").find({ username: username, password: password }),
    function (err, results) {
      if (err) {
        res.status(500).json({errorMsg: err.message}) ;
      }
      if (results.length > 0) {
        res.json({"Login successful": username, password});
      } else {
        res.status(401).json({errorMsg: "Incorrect username and/or password"});
      }
    };
});

module.exports = router;





<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WebServer</title>
    <script>
        function register() {
            let data = { 
                username: document.querySelector("#user").value,
                password: document.querySelector("#pass").value,
            }
            fetch("/api/register", {
                method: "POST",
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(data),
            
            }).then((res) => {
                console.log(JSON.stringify(res.json()));
                alert("response: " + res)
            }).catch((err) => {
                throw(err)
            });
        }
        function login() {
            let data = { 
                username: document.querySelector("#userlogin").value,
                password: document.querySelector("#passlogin").value,
            }

        fetch("/api/login", {
                method: "POST",
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(data),
            }).then((res) => {
                console.log(res.json());
                alert("response: " + res)
            }).catch((err) => {
                throw(err)
            });
        }

        
    </script>
</head>
<body>
    <h1>Register:</h1>
   
    <input autocomplete="username" id = "user" placeholder="username">
    <input autocomplete="current-password" id = "pass" type = "password "placeholder="password">
    <button onclick="register()">Register</button>
    <br>
    <br>
    <br>
    <br>
    <input autocomplete="username" id = "userlogin" placeholder="username">
    <input autocomplete="current-password" id = "passlogin" type = "password" placeholder="password">
    <button onclick="login()">Login</button>

    


</body>
</html>

const express=require(“express”);
const router=express.router();
const db=require(“../../mongo”).db();
const validate=require(“../../validation”);
const{password}=require(“../../validation”);
路由器.post(“/寄存器)”,(请求,res)=>{
res.json({success:true})
log(JSON.stringify(req.body));
让{username,password}=req.body;
让err=validate.username(用户名);
如果(错误)抛出错误;
err=validate.password(密码);
如果(错误)抛出错误;
db.collection(“users”).find({username:username}),
函数(错误,用户名){
如果(错误){
犯错误;
}
如果(用户名){
console.log(用户名);
log(“用户名正在使用!”);
}否则{
log(“未使用!”);
db.collection(“用户”).insertOne({
用户名:username.value,
密码:password.value,
});
}
};
});
路由器.post(“/login)”,(请求、回复)=>{
log(JSON.stringify(req.body));
让{username,email,password}=req.body;
db.collection(“users”).find({username:username,password:password}),
功能(错误、结果){
如果(错误){
res.status(500).json({errorMsg:err.message});
}
如果(results.length>0){
res.json({“登录成功”:用户名、密码});
}否则{
res.status(401).json({errorMsg:“错误的用户名和/或密码”});
}
};
});
module.exports=路由器;
网络服务器
函数寄存器(){
让数据={
用户名:document.querySelector(“#user”).value,
密码:document.querySelector(“#pass”).value,
}
获取(“/api/寄存器”{
方法:“张贴”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
},
正文:JSON.stringify(数据),
})。然后((res)=>{
log(JSON.stringify(res.JSON());
警报(“响应:+res)
}).catch((错误)=>{
投掷(错误)
});
}
函数登录(){
让数据={
用户名:document.querySelector(“#userlogin”).value,
密码:document.querySelector(“#passlogin”).value,
}
获取(“/api/login”{
方法:“张贴”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
},
正文:JSON.stringify(数据),
})。然后((res)=>{
log(res.json());
警报(“响应:+res)
}).catch((错误)=>{
投掷(错误)
});
}
登记册:
登记




登录
res
是一个对象,
alert
隐式调用
toString()
方法,因此,该警报显示“[object response]”

res.json()
是异步的()。因此,如果要使用响应体,必须以某种方式
等待res.json()
res.json()。然后(data=>…)

在您的情况下,这可能类似于

   fetch("/api/login", {
        method: "POST",
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data),
    }).then((res) => {
        return res.json();
    }).then((data) => {
        console.log(JSON.stringify(data));
    }).catch((err) => {
        throw(err)
    });
    

您可以使用implicit
toString()
字符串化对象,该字符串只显示其类型,而不显示内容。