我正在查看mongoose的API文档,并找到了get选项。但似乎对我不起作用。
这是带有get选项的Schema:
var PostSchema = new Schema({
content: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now,
get: function (val) {
return (val.getMonth() + 1) + "/" + val.getDate() + "/" + val.getFullYear() + " " + (val.getHours() + 1) + ":" + (val.getMinutes() + 1) + ":" + (val.getSeconds() + 1);
}
}
})
这是我获取所有文件的地方:
var Post = App.model('post')
exports.fetchAll = function (req, res, next) {
Post.find({}).sort({date: 'desc'}).exec(function (err, posts) {
if (err) { return next(err) }
res.json(posts)
})
}
但结果仍然相同。在客户端,我收到{{post.date}}的非格式化字符串:
2015-10-18T07:56:24.606Z
我无法弄清楚为什么格式化的日期字符串不会被返回。
答案 0 :(得分:2)
通过向架构添加getters: true
选项,可以告诉mongoose在将文档转换为JSON时使用getter。 Mongoose使这个选项成为一个选项,因为在将文档转换为对象(保留原始日期对象)或JSON(格式化日期字符串)时,您可能想要或不想有不同的逻辑:
var PostSchema = new Schema({
content: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now,
get: function (val) {
return (val.getMonth() + 1) + "/" + val.getDate() + "/" + val.getFullYear() + " " + (val.getHours() + 1) + ":" + (val.getMinutes() + 1) + ":" + (val.getSeconds() + 1);
}
}
},
{
toJSON: {
getters: true
}
})