我正在嘗試注冊新用戶,當我發送 post 請求時,服務器很好地注冊了用戶,我可以在我的資料庫中看到它們,但是在我的控制臺中看不到成功日志(我可以捕獲錯誤并將其記錄在我的控制臺中)。
服務器端代碼:
var express = require("express");
const { Error } = require("mongoose");
const passport = require("passport");
var router = express.Router();
const User = require("../models/user");
const catchAsync = require("../utils/catchAsync");
router.post(
"/register",
catchAsync(async (req, res) => {
try {
const { email, username, password } = req.body;
const user = new User({ email, username });
await User.register(user, password);
} catch (e) {
throw new Error("Error signing up");
}
})
);
module.exports = router;
客戶端代碼:
const sumbitHandler = async (data) => {
const { username, email, password } = data;
try {
await fetch("http://localhost:9000/users/register", {
method: "POST",
body: JSON.stringify({
username,
email,
password,
}),
headers: {
"Content-Type": "application/json",
},
})
.then((res) => {
if (res && !res.ok) {
throw new Error("ERROR");
}
console.log("Success");
})
.catch((e) => {
console.log(e.message);
});
} catch (e) {
console.log(e.message);
}
};
uj5u.com熱心網友回復:
您正在混合
async/await風格和舊的.then()Promise 風格。選擇其中之一(我強烈推薦async/await)您沒有將
fetch的回應轉換為 JSON,而是讓它處于 Promise 狀態。您的服務器永遠不會回應客戶端!您需要添加
res.end(),res.send(),res.json()或其他東西。
const sumbitHandler = async (data) => {
const { username, email, password } = data;
try {
const response = await fetch("http://localhost:9000/users/register", {...});
const serverResponse = await response.text(); // or response.json() if your servers sends JSON back
console.log("Success! serverResponse is = ", serverResponse ); // "Done!"
} catch (e) {
console.log(e.message);
}
};
服務器 :
...
await User.register(user, password);
res.send("Done!"); // or res.json({ status : "ok" }); etc.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/343611.html
標籤:javascript 表达 错误处理 拿来 http-post
