【发布时间】:2021-06-03 04:18:29
【问题描述】:
.required() 函数用于节点 js 的 post 请求中的名称、价格、数量。如果我删除所需的功能,那么它可以正常工作。 模型文件代码:
var productSchema = mongoose.Schema({
name: String,
price: Number,
quantity: Number,
});
var Product = mongoose.model("Product", productSchema);
function validateProduct(data) {
const schema = Joi.object({
name: Joi.string().min(3).required(),
price: Joi.number().min(0).required(),
quantity: Joi.number().min(0).required(),
});
api文件代码
router.post(
"/",
validateProduct,
upload.single("productImage"),
async (req, res) => {
console.log(req.file);
let product = await Product.findOne({ name: req.body.name });
if (product)
return res.status(400).send("Product with same name already exist!");
product = new Product();
product.name = req.body.name;
product.price = req.body.price;
product.quantity = req.body.quantity;
await product.save();
return res.send(product);
}
);
【问题讨论】:
-
尝试
console.log() req.body看看它有什么。您是否正确解析表单数据? -
你是否包含了
validateProduct函数的完整代码?如果你把它用作中间件,我认为在某个地方一定有schema.validate&next() -
是的,我有。
return schema.validate(data, { abortEarly: false });