gpt4 book ai didi

javascript - Moment 将日期转换为查找查询的字符串和聚合查询的对象。如何以及为什么?

转载 作者:行者123 更新时间:2023-11-30 15:58:36 24 4
gpt4 key购买 nike

当我使用 find 查询时,它返回日期作为对象,而在使用 aggregate 时,它在使用 moment 转换后将日期作为字符串给出。为什么?

查找查询

this.find({},{
"updated_at":1,
"created_at":1,
},callback);

聚合查询

this.aggregate([{
$project:{
"updated_at" :1,
"created_at" :1,
}
}],callback);

现在,当我使用 moment 将日期转换为 EST 时,我得到以下结果

// lets say query result is in dataArray

var created_at = moment(dataArray[0].created_at);
var created_at_est = created_at.clone().tz("America/New_York");
dataArray[0].created_at = created_at_est.format('ddd MMM DD YYYY HH:mm:ss');
console.log(typeof(dataArray[0].created_at));
// result is string in aggregate query and object in find query

我不明白为什么会这样?谁能解释一下?

最佳答案

这是因为 find 将其结果作为 Mongoose 文档实例(不能自由修改)提供,而 aggregate 将其结果作为普通对象(可以)提供。

因此,如果您想修改 find 结果中的 created_at 字段,请告诉 Mongoose 通过链接对 lean() 的调用来提供普通对象。 :

this.find({},{
"updated_at":1,
"created_at":1,
}).lean().exec(callback);

关于javascript - Moment 将日期转换为查找查询的字符串和聚合查询的对象。如何以及为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38094835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com