使用jquery提交表单时,Node.js挂起
当我提交表单node.js挂起但它保存到mongodb。请告诉我我做错了什么,对节点来说很新。
index.js
router.post('/add-to-cart/:id', cartController.checkCart, cartController.createCart);
cartController
exports.checkCart = async (req, res, next) => {
const cart = await Cart.findOne({"owner": req.params.id});
if (!cart){
return next();
}
else{
res.json(req.body);
};
};
exports.createCart = async (req, res) => {
const createCart = new Cart({
owner: req.params.id,
status: 'open',
products: {
_id: req.body._id,
quantity: req.body.quantity,
price: req.body.price
}
});
const newCart = await createCart.save();
};
JQuery的
$(".submit").click(function(event){
$(".form").submit(req.body);
$(this).attr("class", "submit btn btn-success");
event.preventDefault();
});
回答如下:
exports.createCart
需要声明它已经完成。你应该添加next
函数参数并在最后用next()
调用它,或者使用res.json()
,res.end()
,res.send()
等返回一些东西。
如果没有这些选项,它将无限期地挂起。你在第一个函数中完成它的方式是正确的;只是对第二个应用相同的东西。