【发布时间】:2017-06-30 18:07:13
【问题描述】:
如何在继续发布路由之前检查 mongo/mongoose 值是否存在?
我的(部分)猫鼬模型如下所示:
reserved: {type: Boolean, default: false}
module.exports = mongoose.model("Rentals", rentalsSchema);
我一直在尝试以这种方式检查reserved是否为真,没有任何运气
注意:正如您将在下面看到的,这需要适用于每个出租 ID,因此它需要以某种方式找到 findById。
router.put("/:id/reserve", middleware.checkRentalsStatus, function(req, res){
//checking here for existing value
//checking here for existing value
if(Rentals.reserved == true){
res.redirect("back");
console.log('TAKEN!')
} else {
// Token is created using Stripe.js or Checkout!
// Get the payment token submitted by the form:
var token = req.body.stripeToken; // Using Express
// Charge the user's card:
var charge = stripe.charges.create({
amount: 19500,
currency: "usd",
description: "",
source: token,
}, function(err, charge) {
if(err){
req.flash("error", err.message);
res.redirect("back");
} else {
var reservedby = req.body.reservedby;
var reserved = true;
var reservedemail = req.body.reservedemail;
var newReservation = {reserved: reserved, reservedby: reservedby, reservedemail: reservedemail }
Rentals.findByIdAndUpdate(req.params.id, {$set: newReservation}, function(err, rentals){
if(err){
req.flash("error", err.message);
res.redirect("back");
} else {
req.flash("success","It's reserved for you. Thank you!");
res.redirect("/rentals/" + rentals._id);
}
});
}
});
console.log('charged')
});
如何在完成发布路线之前更改我的代码以检查 reserved 是否为真? (我正在尝试检查后端的保留路线上是否有租用。)
【问题讨论】:
-
请提供完整代码。
-
在这种情况下什么是租赁以及您是如何从 Mongo 中获取价值的。
-
试试这样,我通常在我的代码中尝试它。 if(Rentals.reserved){ res.redirect("back"); console.log('TAKEN!') } else { // 继续发布路由
-
在输入此 if 条件之前打印 Rentals.reserved 的值。
-
对你有用吗。
标签: node.js mongodb authentication post npm