javascript - 响应不返回数据

标签 javascript node.js sequelize.js

我通过保存餐食 ID 创建订单,因此我使用餐食 ID 从餐食表获取餐食数据,但现在出现问题,尽管使用了异步和等待。它返回我的响应并带有空数据,因为代码没有等待。

我不想使用 promise ,因为我的代码库使用异步和等待。我希望保持一致。

static async createOrders(meals, userId, catererId) {
  try {
    const newMeals = JSON.stringify(meals);
    const createdOrder = await Order.create({
      order: newMeals,
      total: 20180,
      caterer_id: 1,
      user_id: userId,
      delivery_status: 0,
    }, {
      raw: true
    });

    const {
      order
    } = createdOrder.dataValues;
    let newOrder = [];
    await order.forEach(async(ord) => {
      const mealId = Object.keys(ord)
      await Meal.findAll({
        where: {
          id: {
            [Op.or]: [...mealId]
          }
        },
        raw: true,
      })
      newOrder = [...res];
    })

    const response = {
      status: 'success',
      message: 'order created',
      data: newOrder,
    };
    return response;
  } catch (error) {
    const response = {
      message: error.message,
      err: true
    };
    throw response;
  }
}
}

回应

   {
    "status": "success",
    "createdOrder": {
        "status": "success",
        "message": "order created",
        "data": []
     }
   }

数据不能为空

最佳答案

async/await 可能无法在 forEach 循环内按预期工作。您应该使用 for...of 循环。试试这个:

static async createOrders(meals, userId, catererId) {
  try {
    const newMeals = JSON.stringify(meals);
    const createdOrder = await Order.create({
      order: newMeals,
      total: 20180,
      caterer_id: 1,
      user_id: userId,
      delivery_status: 0,
    }, {
      raw: true
    });

    const {
      order
    } = createdOrder.dataValues;

    let newOrder = [];

    for(let ord of orrd) => {
      const mealId = Object.keys(ord)
      let res = await Meal.findAll({
        where: {
          id: {
            [Op.or]: [...mealId]
          }
        },
        raw: true,
      })
      newOrder = [...res];
    })

    const response = {
      status: 'success',
      message: 'order created',
      data: newOrder,
    };
    return response;
  } catch (error) {
    const response = {
      message: error.message,
      err: true
    };
    throw response;
  }
}

请告诉我是否解决了您的问题

关于javascript - 响应不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56458017/

相关文章:

javascript - html 'inception' 跨浏览器问题

node.js - Stripe webhook 错误 : No signatures found matching the expected signature for payload

node.js - JSON.parse 未定义的字符串

javascript - sequelize 查询哪里喜欢

postgresql - 如何从表中删除已超过 PostgreSQL 过期限制的所有条目?

javascript - 如何仅通过 Javascript 读取 RTMP 流?

javascript - 使用 Fabric.js 在 Canvas 上绘制线条动画

javascript - 寻找图像 onLoad 的替代品

javascript - MongoClient和Express,连接成功...但是: TypeError: Cannot read property 'collection' of null

javascript - 如何正确编写MySQL UPDATE 查询?