Форма проверки объектов на REST API - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть 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 || "";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...