gpt4 book ai didi

javascript - 如何在此node.js应用程序的警报中获取err.message?

转载 作者:行者123 更新时间:2023-12-03 07:56:15 50 4
gpt4 key购买 nike

我在REST API中有一个PUT,如果vote_score为1(即,他们已经投票),则应该显示一条错误消息,指出“已被投票”,但在警报中却收到一条通用的“内部服务器错误”消息,即不好的UX。到目前为止,错误始终是我尝试过的结果。
如何获得我的错误消息以显示为“已被批准”?或就此而言,如何获得任何错误消息以显示一条消息?我希望我已经提供了足够的信息,包括API代码和前端代码。
到目前为止,我尝试过的尝试是res.status(200).json({ error: err.toString() });next(err)之类的不同事物。
希望有些简单,我希望能得到ELI5类型的答案,因为我是一个初学者并且我的错误处理游戏很弱。谢谢。

const db = require('../db');
const express = require('express');
const debug = require('debug')('app:api:vote');
const Joi = require('joi');
const auth = require('../middleware/auth');
const admin = require('../middleware/admin');

const { required } = require('joi');
const router = express.Router();
router.use(express.urlencoded({ extended: false }));
router.use(express.json());

// general error handler
const sendError = (err, res) => {
debug(err);
if (err.isJoi) {
res.json({ error: err.details.map((x) => x.message + '.').join('\n') });
} else {
res.json({ error: err.message });
}
};
router.put('/upvote/:emojiId/', auth, async (req, res, next) => {
try {
const schema = Joi.object({
emoji_id: Joi.number().required(),
user_id: Joi.number().required(),
vote_score: Joi.number(),
});
const vote = await schema.validateAsync({
emoji_id: req.params.emojiId,
user_id: req.user.user_id,
vote_score: 1,
});


if (!(await db.findVoteByUser(vote.emoji_id, vote.user_id))) {
const upvote = await db.upvote(vote);
} else if ((await db.findVoteByUser(vote.emoji_id, vote.user_id)) == 1) {
throw new Error('Upvoted already');
}

const upvoteScore = await db.getJustUpvotesForEmoji(vote.emoji_id);
res.json(upvoteScore);

} catch (err) {
res.status(500).json({ error: err.toString() });
}
});

module.exports = router;
还有前端
  $(document).on('click', '.upvote-emoji-button', (evt) => {
const button = $(evt.currentTarget);
const emoji_id = button.data('id');
$.ajax({
method: 'PUT',
url: `/api/vote/upvote/${emoji_id}`,
data: emoji_id,
dataType: 'json',
})
.done((res) => {
if (res.error) {
bootbox.alert(res.error);
} else {
// $('#search-emoji-form').trigger('submit');
button.addClass('btn-danger').removeClass('btn-primary');
button.parent().next().next().html(res.upvotes);
button.parent().next().next().next().next().html(res.vote_count);
button.parent().next().next().next().next().next().html(res.total_score);
}
})
.fail((xhr, textStatus, err) => {
bootbox.alert(err);
});
});


最佳答案

尝试更换

res.status(500).json({ error: err.toString() });
res.status(400).send(err.toString());
Documentation

关于javascript - 如何在此node.js应用程序的警报中获取err.message?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64830982/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com