首页 > 解决方案 > 查找后的 Moongose,object.map 未返回键

问题描述

我有一个代码,在查找和填充之后,我将添加一个基于 createdAt 的新键('order_date')。


const summaryGetOrders = async (start_date, end_date) => {
  let orders = await Order.find({ createdAt: { $gte: new Date(start_date), $lt: new Date(end_date) } }).populate(
    'orderdetails_id'
  );

  await Promise.all(
    orders.map(async (i, index) => {
      i.order_date = i.createdAt;
      // orders[index] = i
      // orders[index].order_date = i.createdAt
    })
  );

  console.log(orders);

  return orders;
};

我检查了console.log(i.createdAt),它确实在i 中有日期元素,但是当我执行console.log(orders) 时,它并没有返回我的order_date。

它是由异步等待功能引起的吗?我这样做是因为我的快速样板通过我模型上的 toJSON 函数自动删除 createdAt 键。我不想修改,因为我的代码是定制的,不能处理 createdAt。

标签: javascriptmongoose

解决方案


orders.map将返回一个新数组。orders变量本身不会改变。所以无论你添加什么都在新数组中。检查这个。

await Promise.all(
    orders = orders.map(async (i, index) => ({
      i.order_date = i.createdAt;
      // orders[index] = i
      // orders[index].order_date = i.createdAt
    }))
);

现在,您的订单将被重新分配给新数组,您可以获取其中的值。


推荐阅读