Javascript 无法读取属性';getDate';
我正在使用keystone进行我的项目。在“Post”数据库中有publishedDate,我想用下面的代码格式化它Javascript 无法读取属性';getDate';,javascript,node.js,mongoose,keystone,Javascript,Node.js,Mongoose,Keystone,我正在使用keystone进行我的项目。在“Post”数据库中有publishedDate,我想用下面的代码格式化它 function formatDate(date) { var monthNames = [ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık
function formatDate(date) {
var monthNames = [
"Ocak", "Şubat", "Mart",
"Nisan", "Mayıs", "Haziran", "Temmuz",
"Ağustos", "Eylül", "Ekim",
"Kasım", "Aralık"
];
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
return day + ' ' + monthNames[monthIndex] + ' ' + year;
}
var q = keystone.list('Post').model.findOne({
state: 'published',
slug: locals.filters.post,
}).populate('author categories');
q.exec(function (err, result) {
Object.keys(result).forEach(function (key) {
var element = result[key];
element.newDate = formatDate(element.publishedDate);
});
locals.data.post = result;
next(err);
});
});
当我运行project时,会发生错误。但我知道“publishedDate”是一个日期值
Mongoose model 'error' event fired on 'Post' with error:
Cannot read property 'getDate' of undefined TypeError: Cannot read property 'getDate' of undefined
从您的代码:
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
您确定在date
对象中确实有一个getDate()
,date.getMonth()
,getFullYear()
,因为我还没有看到您在哪里实例化了日期新日期()
也许你想经历一下,也许会有帮助。
var today=新日期();
var day=today.getDate();
var month=today.getMonth()+1//一月是零!
var year=today.getFullYear();
如果(天更换
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
进入
element.newDate=formatDate(新日期(element.publishedDate));
。您将字符串传递给一个需要日期对象的函数,它似乎是元素。publishedDate
未设置。它表示未定义的属性“getDate”,因此您应该尝试找出它是未定义的原因只需检查元素是否具有publish edDate
属性。如果没有,它将将是未定义的
,您将在获取时得到错误。整个对象.keys(结果).forEach
事情是可疑的。您已经执行了findOne
。它是否真的会返回一个对象,其中每个属性都引用一个具有publishedDate
属性的对象?这似乎很奇怪。我希望您执行find
并获得一个数组。
var day = new Date(date).getDate();
var monthIndex = new Date(date).getMonth();
var year = new Date(date).getFullYear();