javascript - 查找后的 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。
解决方案
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
}))
);
现在,您的订单将被重新分配给新数组,您可以获取其中的值。
推荐阅读
- collections - 更好的集合功能
- python - 查找二维数组中每一行唯一的元素
- python - Pandas 合并具有两列共同的表
- redis - 如何设置哨兵隧道
- json - 如何验证 json 键是否包含 Wiremock 中的特定值
- c++ - WiFi 工作时,您可以使用所有 ESP32 的 GPIO 引脚吗?
- c# - 在 CloudBlobDirectory 对象中按前缀列出 blob
- sql - django:通过从日期中提取月份和年份进行分组
- javascript - 我如何使用来自 div 类而不是数组的这些 JS 数组数据
- javascript - 我想在 ejs 中将字符串渲染为脚本