无法处理 model.save 错误和 return 到 FE
cannot handle model.save error and return to FE
我正在尝试使用 Mongoose 将项目保存到数据库,return 保存的项目或客户端的错误。
当使用重复文档进行邮递员调用时,我希望得到重复错误,进入 'catch' 语句并检索 500 状态代码和消息。但是,我总是到达 'then' 结果未定义且状态代码为 200。
我也尝试将 'throw' 更改为 'return' 但没有成功。我哪里错了?
路线:
router.post("/", (req, res) => {
const schema = Joi.object({
// id: Joi.number().required(),
name: Joi.string().min(3).required(),
description: Joi.string().optional(),
categoryID: Joi.number().required(),
// ingredients: Joi.array().optional(),
price: Joi.number().required(),
vegan: Joi.boolean().required(),
special: Joi.boolean().required(),
img: Joi.string(),
});
let result = schema.validate(req.body);
if (result.error) {
res.status(400).send(result.error);
return;
}
let menu = new Menu();
const {
// id,
name,
description,
categoryID,
ingredients,
price,
vegan,
special,
// img,
} = req.body;
// menu.id = id;
menu.name = name;
menu.categoryID = categoryID;
menu.description = description;
menu.ingredients = ingredients;
menu.price = price;
menu.vegan = vegan;
menu.special = special;
// menu.img = img;
MenuService.saveMenuItem(menu)
.then((result) => {
return res.json(result);
})
.catch((err) => {
return res.status(500).send(err);
});
});
服务:
async function saveMenuItem(menuItem) {
await menuItem.save((err, item) => {
if (err) throw new Error(err.message);
return item;
});
}
module.exports.saveMenuItem = saveMenuItem;
This is the route.
This is the service.
你可能应该试试这个:
async function saveMenuItem(menuItem) {
return new Promise((resolve, reject)=>{
menuItem.save((err, item) => {
if (err) reject(err.message);
resolve(item);
})
}
我正在尝试使用 Mongoose 将项目保存到数据库,return 保存的项目或客户端的错误。 当使用重复文档进行邮递员调用时,我希望得到重复错误,进入 'catch' 语句并检索 500 状态代码和消息。但是,我总是到达 'then' 结果未定义且状态代码为 200。 我也尝试将 'throw' 更改为 'return' 但没有成功。我哪里错了?
路线:
router.post("/", (req, res) => {
const schema = Joi.object({
// id: Joi.number().required(),
name: Joi.string().min(3).required(),
description: Joi.string().optional(),
categoryID: Joi.number().required(),
// ingredients: Joi.array().optional(),
price: Joi.number().required(),
vegan: Joi.boolean().required(),
special: Joi.boolean().required(),
img: Joi.string(),
});
let result = schema.validate(req.body);
if (result.error) {
res.status(400).send(result.error);
return;
}
let menu = new Menu();
const {
// id,
name,
description,
categoryID,
ingredients,
price,
vegan,
special,
// img,
} = req.body;
// menu.id = id;
menu.name = name;
menu.categoryID = categoryID;
menu.description = description;
menu.ingredients = ingredients;
menu.price = price;
menu.vegan = vegan;
menu.special = special;
// menu.img = img;
MenuService.saveMenuItem(menu)
.then((result) => {
return res.json(result);
})
.catch((err) => {
return res.status(500).send(err);
});
});
服务:
async function saveMenuItem(menuItem) {
await menuItem.save((err, item) => {
if (err) throw new Error(err.message);
return item;
});
}
module.exports.saveMenuItem = saveMenuItem;
This is the route.
This is the service.
你可能应该试试这个:
async function saveMenuItem(menuItem) {
return new Promise((resolve, reject)=>{
menuItem.save((err, item) => {
if (err) reject(err.message);
resolve(item);
})
}