使用NodeJS将随机生成的折扣券保存到Mongodb中

时间:2017-07-26 05:03:27

标签: node.js mongodb mongoose

我有CouponProduct的此架构。我想要的是,当使用API​​添加产品时,将创建某些unit个独特优惠券并将其插入优惠券中,并且还应在产品中插入这些优惠券的参考。我正在使用coupon-code包来生成优惠券。

let couponSchema = new Schema({
  code: {type: String, unique: true},
  status: {type:Boolean, default: false}
});

module.exports = mongoose.model('Coupon', couponSchema);

let productSchema = new Schema({
  prductname: {type: String},
  unit: {type: Number},
  coupon: [{type: Schema.Types.ObjectId, ref: Coupon}],
  category: {type: String}
});

module.exports = mongoose.model('Product', productSchema);

这是我添加产品的帖子API。我可以将代码保存到优惠券集合中,但对如何保存最近添加的产品优惠券参考文件感到困惑。

api.post('/add', (req, res, next) => {
  let newProduct = new Product();

  newProduct.productname = req.body.productname;
  newProduct.unit = req.body.unit;
  newProduct.category = req.body.category;

  var i;
  for(i=0; i<=req.body.unit; i++){
    var code = ucg.generate(); // ucg is imported from coupon-code package
    let newCoupon = new Coupon();
    newCoupon.code = code;
    newCoupon.save(err => {
      if (err) {
        console.log("error occured");
        return;
      }
    });
  }

  newProduct.save(err => {
    if (err) {
      res.send(err);
      return;
    }
    res.json({message: "Product added successfully."});
  });
});

任何人都可以帮我找到办法吗?如果我的解释不够,请告诉我。

1 个答案:

答案 0 :(得分:0)

我通过添加push方法newProduct.coupon.push(newCoupon.id);

解决了这个问题
for(i=0; i<=req.body.unit; i++){
    var code = ucg.generate(); // ucg is imported from coupon-code package
    let newCoupon = new Coupon();
    newCoupon.code = code;
    newCoupon.save(err => {
      if (err) {
        console.log("error occured");
        return;
      }
    });
    newProduct.coupon.push(newCoupon.id);
  }