Эй, как насчет меньшего решения, которое я даю вам, чтобы просто улучшить ваш код
Что не так с вашим кодом ??
- Вы запрашиваете то же самое пользователь дважды!
- Вы находитесь на холме функций обратного вызова
- Зацикливание пользователя, когда вы знаете, что у него есть «имя пользователя»
- НЕ ДОЛЖЕН ИСПОЛЬЗОВАТЬ МЕТОД СОХРАНЕНИЯ напрямую.
Что вам следует сделать в первую очередь, вы должны проверить, существует ли какой-либо пользователь с таким же именем пользователя! вы должны вернуть дубликат или не разрешен или уже существует
И вы должны использовать функцию запросов в mon goose или в любой другой БД, потому что это быстрее прочтите мой код ниже, и я помогу вам, если вы его не поймете. не стесняйтесь комментировать или напишите мне на fb.com/mustafa.ali2
// I'm using here async await which is much cleaner and easy to read ?
app.post('profile/:id', async (req, res) => {
// Try catch for any error other error ?
try {
// Destructuring the id form req.params (new way to do things !)
const { id } = req.params
// Querying the DB (MongoDB) and updating when we fond the user that match the given _id ?
const user = await User.findOneAndUpdate(
{ _id: new mongoose.Types.ObjectId(id), username: null },
{ $set: { username: req.body.username } }
)
// if user not found return error ?
if (!user)
return res.status(404).send('Resource not found');
// if user found return success ?
res.status(200).send('Updated successfully');
} catch (err) {
log(err);
res.status(500).send('Internal Server Error');
}
})