节点js:异步或同步

时间:2020-09-21 08:33:31

标签: node.js

我正在做一个项目,其中bar中为4种不同的顺序分配了4种不同的颜色。 isCart : 4表示订单未完成/已取消。一旦4种颜色被占用,将开始为即将到来的订单分配默认颜色。一旦完成或取消了该订单,则该分配的颜色将变为免费,并开始分配给下一个即将到来的订单。我面临一个问题,即有时在同一栏中为不同用户重复使用颜色。 这是我的逻辑:

let colorCode: string = await this.common.orderColorCode(updateStatus.barId,
  checkoutSessionData.orderId);

public async orderColorCode(barId: string, orderId: string) {
  console.log(barId + ' barId');
  console.log(orderId + ' orderId');
  let orderedColorCode = await this.itemOrderService.findOneCart(
    { barId: mongoose.Types.ObjectId(barId), colorCode: { $ne: constants.defaultColor }, "isCart": 4 },
    { _id: 0, colorCode: 1 }, { colorCode: 1 }, 0);

  const usedColorCode = orderedColorCode.map(function (obj) {
    return obj.colorCode;
  });
  console.log(usedColorCode + ' Used Color code');
  var pendingColorCode = constants.colorCode.filter(function (item) {
    return usedColorCode.indexOf(item) === -1;
  });
  console.log(pendingColorCode + ' pending Color code');
  let colorCode = (pendingColorCode.length === 0) ? constants.defaultColor : pendingColorCode[0];
  console.log(colorCode + ' Color code----------');
  const updateColorCode = await this.itemOrderService.updateColorCodeOrderId({ _id: mongoose.Types.ObjectId(orderId) }, colorCode);
  return colorCode;
}

0 个答案:

没有答案