В приведенном ниже коде я не получаю ответ HTTP на лицевой стороне, хотя метод updateOne
фактически обновляет данные в базе данных, и на консоли отображается сообщение «Hello there». Я явно что-то упускаю, но кто-то может указать мне на это?
Кроме того, в целом, я не уверен, что цепочка then
, как это, является хорошей практикой. Это нормально?
exports.updateUserProfile = (req, res) => {
const userId = req.body.id;
const password = req.body.password;
const newIds = req.body.newIds;
userService.isPasswordValid(userId, password)
.then(
isValid => {
if (isValid) {
return isValid;
} else {
return res.status(401).json({
message: 'Invalid password.'
});
}
})
.then(
() => {
return userService.getFieldsToUpdate(newIds);
})
.then(
update => {
console.log('update: ', update);
return User.updateOne(
{ _id: userId },
update
);
})
.then(
() => {
res.status(200).json({
message: 'User profile successfully updated.'
});
console.log('hello there!');
})
.catch(
err => {
return res.status(400).end({
message: err
});
}
);
}
Я вызываю этот метод в следующем маршрутизаторе
const express = require('express');
const router = express.Router();
const auth = require('../middlewares/auth');
const userCtrl = require('../controllers/user');
router.post('/signup', userCtrl.signup);
router.post('/login', userCtrl.login);
router.put('/updateProfile', auth, userCtrl.updateUserProfile);
router.get('/myprofile', auth, userCtrl.myProfile);
module.exports = router;
, который, в свою очередь, вызывается в
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const app = express();
const userRoute = require('./routes/user');
mongoose.connect('...', { useNewUrlParser: true })
.then(() => {
console.log('Successfully connected to MongoDB Atlas!');
})
.catch((err) => {
console.log('Unable to connect to MongoDB Atlas');
console.error(err);
});
app.use(bodyParser.json());
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content, Accept, Content-Type, Authorization');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
next();
});
app.use('/', userRoute);
app.use('/signup', userRoute);
app.use('/login', userRoute);
app.use('/myprofile', userRoute);
app.use('/changePassword', userRoute)
module.exports = app;