B. The check '!req.body.count' fails when count is 0
C. express.json() middleware is missing
D. res.send() should be called before res.status()
Solution
Step 1: Understand parseInt and check
parseInt converts strings to numbers; 0 is falsy in JavaScript.
Step 2: Analyze the if condition
The condition '!req.body.count' treats 0 as false, wrongly triggering the error for count=0.
Final Answer:
The check '!req.body.count' fails when count is 0 -> Option B
Quick Check:
Falsy check fails for 0 count [OK]
Hint: Check for 0 explicitly, not with '!value' [OK]
Common Mistakes:
Assuming parseInt is wrong here
Missing express.json() middleware
Calling res.send before res.status
5. You want to transform an incoming request body to remove any properties with empty strings and convert all numeric strings to numbers. Which code snippet correctly performs this transformation in Express?
hard
A. app.use(express.json());
app.post('/transform', (req, res) => {
for (const key in req.body) {
if (req.body[key] === '') delete req.body[key];
else if (!isNaN(req.body[key])) req.body[key] = Number(req.body[key]);
}
res.send(req.body);
});
B. app.use(express.json());
app.post('/transform', (req, res) => {
Object.keys(req.body).forEach(key => {
if (req.body[key] === '') req.body[key] = null;
else if (typeof req.body[key] === 'string') req.body[key] = parseInt(req.body[key]);
});
res.send(req.body);
});
C. app.use(express.urlencoded());
app.post('/transform', (req, res) => {
for (const key in req.body) {
if (req.body[key] === '') delete req.body[key];
else if (!isNaN(req.body[key])) req.body[key] = Number(req.body[key]);
}
res.send(req.body);
});
D. app.use(express.json());
app.post('/transform', (req, res) => {
for (const key in req.body) {
if (req.body[key] === '') req.body[key] = undefined;
else if (isNaN(req.body[key])) req.body[key] = Number(req.body[key]);
}
res.send(req.body);
});
Solution
Step 1: Check middleware and iteration
express.json() is needed to parse JSON bodies; for..in loops over keys correctly.
Step 2: Validate transformation logic
app.use(express.json());
app.post('/transform', (req, res) => {
for (const key in req.body) {
if (req.body[key] === '') delete req.body[key];
else if (!isNaN(req.body[key])) req.body[key] = Number(req.body[key]);
}
res.send(req.body);
}); deletes keys with empty strings and converts numeric strings to numbers using !isNaN check.
Step 3: Compare other options
app.use(express.json());
app.post('/transform', (req, res) => {
Object.keys(req.body).forEach(key => {
if (req.body[key] === '') req.body[key] = null;
else if (typeof req.body[key] === 'string') req.body[key] = parseInt(req.body[key]);
});
res.send(req.body);
}); sets empty strings to null and always parses strings with parseInt (may convert non-numeric wrongly). app.use(express.urlencoded());
app.post('/transform', (req, res) => {
for (const key in req.body) {
if (req.body[key] === '') delete req.body[key];
else if (!isNaN(req.body[key])) req.body[key] = Number(req.body[key]);
}
res.send(req.body);
}); uses express.urlencoded() which is wrong for JSON. app.use(express.json());
app.post('/transform', (req, res) => {
for (const key in req.body) {
if (req.body[key] === '') req.body[key] = undefined;
else if (isNaN(req.body[key])) req.body[key] = Number(req.body[key]);
}
res.send(req.body);
}); wrongly converts non-numeric strings to numbers.
Final Answer:
app.use(express.json());
app.post('/transform', (req, res) => {
for (const key in req.body) {
if (req.body[key] === '') delete req.body[key];
else if (!isNaN(req.body[key])) req.body[key] = Number(req.body[key]);
}
res.send(req.body);
}); -> Option A
Quick Check:
Delete empty and convert numeric strings = app.use(express.json());
app.post('/transform', (req, res) => {
for (const key in req.body) {
if (req.body[key] === '') delete req.body[key];
else if (!isNaN(req.body[key])) req.body[key] = Number(req.body[key]);
}
res.send(req.body);
}); [OK]