Разница между данными формы и x www form urlencodedJavascript

Форум по Javascript
Ответить
Anonymous
 Разница между данными формы и x www form urlencoded

Сообщение Anonymous »

Так что я новичок в программировании и недавно начал обучение бэкэнд. Хорошо, недавно я столкнулся с проблемой с почтальником, делая запрос на почту. Поэтому, когда я написал контроллер для регистрации пользователя, я использовал Postman для тестирования, и выполнить простой запрос на почту с помощью Form-Data , которые состоят из таких полей, как имя пользователя, электронная почта, полное имя, аватар, коврек, пароль. И это сработало совершенно нормально, и пользователь был зарегистрирован в базе данных. поля имени пользователя, пароль. Он начал бросать ошибку, как не может прочитать свойства неопределенных. После некоторой отладки я узнал, что тело в запросе имеет пустой объект, и поэтому я получаю эту ошибку. Я попытался отправить необработанные данные из почтальона, но это тоже не сработало, но, наконец, когда я попробовал с XWW-form-urlencoded это сработало.
Так что мой вопрос Почему это работало с X-WWW-Form-Urlencode, а не с формой-датой и сырой? А также почему я получал пустой объект, пока отправлял данные о дате форм и необработанных.const registerUser = asyncHandler( async (req, res) => {

const {fullName, email, username, password} = req.body

if ([fullName, email, username, password].some(field => field?.trim() === "")) { // we're using optional chaining to avoid running trim() on null or undefined field
throw new ApiError(400, "All fields are required!") // Checking if all the fields are non-empty
} else if (!email?.includes("@") || !email?.includes(".")) { // Checking if email is vaild or not
throw new ApiError(400, "Please enter a vaild email") // Its not a hard check for email
}

const existedUsername = await User.findOne({username})
const existedEmail = await User.findOne({username})

if (existedUsername) {
throw new ApiError(409, "Username already exist")
} else if (existedEmail) {
throw new ApiError(409, "Email is already linked to a different account")
}

let avatarLocalPath;
if (req.files && Array.isArray(req.files.avatar) && req.files.avatar.length > 0) {
avatarLocalPath = req.files?.avatar[0]?.path; // multer gives us the access of .files field in the request
}

let coverImageLocalPath; // manually checking if coverImage is provided or not before chaining
if (req.files && Array.isArray(req.files.coverImage) && req.files.coverImage.length > 0) {
coverImageLocalPath = req.files.coverImage[0].path;
}

if (!avatarLocalPath) {
throw new ApiError(400, "Avatar Local path is required!")
}

const avatar = await uploadOnCloudinary(avatarLocalPath);
// console.log(avatar)
const coverImage = await uploadOnCloudinary(coverImageLocalPath);

if (!avatar) {
throw new ApiError(400, "Avatar file is required")
}

const user = await User.create({
fullName,
avatar: avatar.url,
coverImage: coverImage?.url || "",
username: username.toLowerCase(),
email,
password,
})

const createdUser = await User.findById(user._id).select("-password -refreshToken");

if (!createdUser) {
throw new ApiError(500, "Something went wrong while registering the user")
}

return res.status(201).json(
new ApiResponse(200, createdUser, "User registered Successfully")
)
})
< /code>
Вот и логинзатор контроллер -< /p>
const loginUser = asyncHandler( async (req, res) => {

const {email, username, password} = req.body

if (!(username || email)) {
throw new ApiError(400, "Username or Email is required to Login")
}

const user = await User.findOne({
$or: [{username}, {email}]
})

if (!user) {
throw new ApiError(404, "User does not exist");
}

const isPasswordValid = await user.isPasswordCorrect(password);

if (!isPasswordValid) {
throw new ApiError(401, "Invaild user password");
}

const {accessToken, refreshToken} = await generateAccessAndRefreshTokens(user._id);

const loggedInUser = await User.findById(user._id).select("-password -refreshToken");

const options = {
httpOnly: true,
secure: true
}

return res
.status(200)
.cookie("accessToken", accessToken, options)
.cookie("refreshToken", refreshToken, options)
.json(new ApiResponse(
200,
{
user: loggedInUser,
accessToken,
refreshToken
},
"User logged In Successfully")
)
})


Подробнее здесь: https://stackoverflow.com/questions/794 ... urlencoded
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»