Saya mencoba memahami cara mengembalikan banyak nilai. Saat ini kode saya diatur untuk mengembalikan satu objek (redeemDisc) untuk kode apa pun yang memiliki tepat satu kode penukaran. Masalah saya adalah jika sebuah kode memiliki lebih dari satu kode penukaran, kode tersebut hanya mengembalikan 'beberapa diskon'. Saya mencoba memahami cara menyimpan 'redeemDisc' dalam array sehingga jika ada banyak diskon saya bisa mengembalikan semuanya

redeemCode({ userUuid, code }) {
let error;
let locationId;
return this.models.BusinessLocation.findOne({
  where: {
    code: code,
    deleted: false
  }
}).then(loc => {

  if (loc === null)
  {
    error = 'Invalid Code';
    return;
  }
  locationId = loc.id;
  return this.models.OfferLocation.findAndCountAll({
    where: {
      locationId: loc.id
    }
  })
}).then(async offerLocs => {

    if (offerLocs.length === 0)
    {
      return "Zero Discounts";
    }
    let count = 0;
    let offer;
    let i;
    for ( i = 0; i < offerLocs.rows.length;i++)
    {
        let offerLoc = offerLocs.rows[i];
        offer = await this.models.Discount.findOne({
          where: {
            id: offerLoc.offerId
          }
        });

        if (!offer.active || offer.deleted)
        {
          continue;
        }

        count++;
    }

    console.log('redeeemCode -service (offer count)', count) ;       
    console.log('redeeemCode -service (offer )', JSON.stringify(offer)) ;       

    if (count > 1)
    {
      return 'multiple discounts';
    }
    if (count === 0)
    {
      return 'zero discounts';
    }

    // have a single offer - claim

    return this.redeemDisc(
      { discountId: offer.id , 
        userUuid: userUuid, 
        code: code, 
        locationId: locationId
      }).then(redeemed => {
        return redeemed;
        }
        )


})

}

Untuk satu diskon, ia mengembalikan JSON dalam bentuk

"redeemed": {
    "createdAt": "2019-10-27T23:54:14.031Z",
    "updatedAt": "2019-10-27T23:54:14.031Z",
    "id": "143751f0-f915-11e9-8107-658322eb948c",
    "UserUuid": "b136ccd9-0783-482d-956b-7082286051b3",
    "DiscountId": "97cfdf90-3ee0-11e9-b720-c1f2606cbbd2",
    "BusinessId": "978a7220-3ee0-11e9-b720-c1f2606cbbd2",
    "locationId": "97cf1c40-3ee0-11e9-b720-c1f2606cbbd2"
}

Saya perlu memahami cara mengembalikan semua diskon yang terkait dengan kode yang diberikan, sehingga hasil yang diharapkan adalah

Ditebus: { ... }, ditebus: { ... }, ...

0
mjm 28 Oktober 2019, 21:25

1 menjawab

Jawaban Terbaik

Karena Anda memiliki beberapa penawaran yang terkait dengan satu kode, maka Anda harus menggunakan array penawaran alih-alih variabel dan Anda harus menyimpan setiap detail penawaran dalam array penawaran itu.

let offer = [];
let i;
for ( i = 0; i < offerLocs.rows.length;i++)
{
    let offerLoc = offerLocs.rows[i];
    offer[count] = await this.models.Discount.findOne({
      where: {
        id: offerLoc.offerId
      }
    });

    if (!offer.active || offer.deleted)
    {
      continue;
    }

    count++;
}

Dan sekarang Anda dapat menyimpan dan mengembalikan array diskon seperti ini.

var discount = []
for(let j =0; j<offer.length; ++j) {
   let redeem = await this.redeemDisc(
                  { discountId: offer.id , 
                    userUuid: userUuid, 
                    code: code, 
                    locationId: locationId
                  })
  discount.push({"redeemed": redeem})                 

}

return discount;
1
amit gupta 28 Oktober 2019, 18:48