我负责nestjs的后台工作,我提供列表和posting detail view api来发布文章。 要暴露列表,需要通过计算上传时间和当前时间来提供已经过去了多少时间。对于这个计算,mongodb的管道中使用了减法。在详细视图api中,它被正确地提取出来,但是在暴露列表的api中,当前时间被计算为与第一次请求的时间相同,因此提取的值相同。但是,如果我关闭并打开服务器,当前时间会再次刷新,但在第一次请求后仍是相同的。
我听说www.example.com()继续使用服务器启动时创建的对象,所以我尝试了新的Date()和Date.now,但仍然不起作用。Date.now() continues to use the object created when the server started, so I tried new Date() and Date.now, but it still doesn't work.
错误管道如下
export const GetRecentVideoListPipeLine = [
{
'$project': {
'_id': 1,
'nickName': 1,
'thumbNailPath': 1,
'title': 1,
'tags': 1,
'likeCount': 1,
'uploadedAt': {
'$subtract': [
Date.now(),
'$uploadedAt'
]
},
}
},
{ '$sort': { 'uploadedAt': 1 } }
];
但是,这个很好用
export const GetVideoDetailPipeLine = (videoId: string) => {
return [
{ '$match': { '_id': new ObjectId(videoId) }},
{ '$project': {
'_id': 1,
'nickName': 1,
'title': 1,
'tags': 1,
'likeCount': 1,
'videoPath': 1,
'uploadedAt': {
'$subtract': [
Date.now(),
'$uploadedAt'
]
}
}}
]
}
有什么问题吗?
1条答案
按热度按时间db2dz4w81#
在第一个代码片段中,你有一个常量对象,它在代码开始时被求值,然后被重用而不需要重新求值;在第二个代码片段中,你有一个方法,它在方法的调用时被求值,这意味着值在每次调用时都被重新求值。
对比
第一组
now
是静态的,仅在每次运行脚本时更改。第二组now
是动态的,不仅在每次运行脚本时更改,而且在每次执行函数时更改