日期字段查询结果为js函数

时间:2017-04-20 13:42:12

标签: node.js mongodb keystonejs bootstrap-daterangepicker

在KeystoneJS的pug视图中,我需要传递一个数组,其中包含从2个MongoDB日期字段到daterangepicker isInvalidDate的日期范围

控制器中的查询是:

view.query('booked', Booking.model.find({}, 'startDate endDate'));

在玉视图= booked中返回:

{ _id: 58f71314a20fc062ee02f4df, startDate: 2017-04-18T21:00:00.000Z,
endDate: 2017-04-19T21:00:00.000Z },{ _id: 58f8768c0741e2118b1efe43,
startDate: 2017-04-23T21:00:00.000Z, endDate: 2017-04-25T21:00:00.000Z },{...

在jade view js block中,这个片段:

var books =!{JSON.stringify(booked, ['startDate', 'endDate'])};

返回:

startDate: 2017-04-18T21:00:00.000Z
endDate: 2017-04-19T21:00:00.000Z

startDate: 2017-04-23T21:00:00.000Z
endDate: 2017-04-25T21:00:00.000Z

如何格式化startDateendDate属性以获得结果:

["04/18/2017", "04/19/2017", "04/23/2017", "04/25/2017"]

(没有标签,只有日期值,逗号分隔)

1 个答案:

答案 0 :(得分:1)

booked作为Pug变量公开,而不是JavaScript变量。要将Pug变量(从您的数据库)传递给JavaScript,您必须在页面中嵌入变量的直接内容,然后将其作为JSON检索。

"isInvalidDate": function (date) {
    var books = !{JSON.stringify(books)}; // Now an array of objects
    // Your other code
},

Codepen

由于日期在数据库中的格式化,其余代码需要更改,但books现在将是您需要的对象数组。如果您想比较格式MM/DD/YYYY的日期,endDate中的startDatebooks属性需要正确格式化以进行比较(或-1将始终被退回)。