我有一个Express API,其中有以下Mongoose查询,该查询从数据库中提取帖子,然后我想将数据库中的时间戳(Date()对象)转换为相对时间字符串。
正如您所看到的,我正在尝试使用Array.Map将一个具有此字符串作为值的time
属性添加到posts对象。
这似乎可行,因为在控制台中登录items[0].time
会返回正确的值(请参见cose中的注释)。
但是!当使用res.json将对象发送回时,time
属性不在其中。
我认为这可能是客户端缓存问题,但是当在res.json
中添加另一个值时,新值将随帖子一起发送。
Post.find({}, 'author text timestamp')
.sort({ _id: -1 })
.populate({ path: 'author', select: 'username' })
.exec(function(error, posts) {
if (error) {
console.error(error)
}
items = posts.map(function(item) {
item.time = moment(item.timestamp).fromNow()
return item
})
console.log('Relative date:' + items[0].time) // This logs: "Relative date:an hour ago"
res.json({
posts: items
})
/*
Response:
posts: {
0: {
author: {_id: "5c98f40f793edf61bcc94b4d", username: "Admin"},
text: "Why",
timestamp: "2019-04-04T15:46:36.142Z",
_id: "5ca626dc45734a2612acbcd2"
}
}
*/
})
这是服务器相关的缓存问题还是我不知道的Mongoose对象特有的问题?
预先感谢您的帮助。