#javascript #node.js #backend
Вопрос:
Поэтому я создаю веб-приложение NodeJS, которое включает в себя сохранение данных с помощью Мангуста, как показано ниже.
Мне нужно показать всплывающее окно, когда сохранение будет выполнено.
// Update the user model
User.updateOne({userId: request.user.userId}, {$push: {saved: [parseInt(request.query.saveId)]}}, function(error, success){
if(error){
console.log(error)
} else {
//
// Show a window alert in javascript here
}
});
Хотя я знаю, что NodeJS и JS имеют совершенно разные функции, могу ли я как-нибудь вызвать window?оповещение через NodeJS, возможно, по какому-то URL-адресу?
Комментарии:
1. Пожалуйста, скажите, используете ли вы механизм просмотра или обслуживаете HTML-страницы напрямую?
2. Да, я использую ejs. Однако я не хочу, чтобы страница обновлялась
Ответ №1:
В свой файл ejs добавьте тег сценария, подобный этому
<script>
fetch('/users/update', { method:'POST',data: JSON.stringify(user) }})
.then(res => res.json())
.then(data => window.alert(data))
.catch(err => window.alert("Error updating user:" err.message))
</script>
Внутри JSON.stringify(user)
user
объект должен быть получен из рендеринга
И создайте маршрут, который соответствовал /users/update
бы БД, и сделайте все здесь
app.post('/users/update',(req,res) => {
User.updateOne({userId: req.user.userId}, {$push: {saved: [parseInt(request.query.saveId)]}}, function(error, success){
if(error){
res.status(500).json({message: erroe.message})
} else {
res.json({message: "User updated"})
}
});
})