У меня есть API, в котором передний конец реагирует по умолчанию на "нулевые" значения.я проверил console.log, а также проверил в базе данных, что он отправляет «null» и свойство sent, по умолчанию «false».
Теперь к основному вопросу.Мой маршрут, который принимает данные об API и затем определяет, должен ли ответ быть:
код состояния: 201 (если значения! == null || "") код состояния: 400 (если значения ===null || "")
он всегда возвращает код состояния 201, не проверяя нулевые значения вообще.
с контекстом вне пути.вот код для справки:
router.post("/api/event", (req, res)=>{
if (!req.user) {return res.sendStatus(401)};
// event data to be stored.
let eventData = {
"event": req.body.event,
"sendingHour": req.body.sendingHour,
"sendingMinutes": req.body.sendingMinutes,
"cardUrl": req.body.cardUrl,
"year": req.body.year,
"month": req.body.month,
"day": req.body.day,
"text": req.body.text,
"subject": req.body.subject,
"to": req.body.to,
"from": req.body.from,
"sent" : false
};
if (req.user){
if (eventData !== null || ""){
userModel.findByIdAndUpdate(req.user._id,
{ "$push": { "events": eventData } },
{ "new": true, "upsert": true },
function (err, doc) {
if (err) throw err;
res.sendStatus(201);
}
);
}else{
res.sendStatus(400);
}}});
Я также пытался с отдельными значениями объектов:
router.post("/api/event", (req, res)=>{
// statment that checks if form data is okay.
const invalidFormStatement =
(req.body.event && req.body.sendingHour
&& req.body.sendingMinutes &&
req.body.date && req.body.text &&
req.body.subject && req.body.to &&
req.body.from && req.body.year && req.body.month && req.body.day) === null || "";
//if not a authorized user.
if (!req.user) {res.sendStatus(401)};
// if authorized
if (req.user) {
// Form data empty or not a user return 400 code.
if (!req.user || invalidFormStatement) {
res.sendStatus(400);
}
// if form is valid
if (!invalidFormStatement)
{
let eventData = {
"event": req.body.event,
"sendingHour": req.body.sendingHour,
"sendingMinutes": req.body.sendingMinutes,
"cardUrl": req.body.cardUrl,
"year": req.body.year,
"month": req.body.month,
"day": req.body.day,
"text": req.body.text,
"subject": req.body.subject,
"to": req.body.to,
"from": req.body.from,
"html": req.body.html,
"sent" : false
};
userModel.findByIdAndUpdate(req.user._id,
{ "$push": { "events": eventData } },
{ "new": true, "upsert": true },
function (err, doc) {
if (err) throw err;
res.sendStatus(201);
}
);
}}});
А также заменой оператора && на ||
const invalidFormStatement =
(req.body.event || req.body.sendingHour
|| req.body.sendingMinutes ||
req.body.date || req.body.text ||
req.body.subject || req.body.to ||
req.body.from || req.body.year || req.body.month || req.body.day) === null || "";