【问题标题】:Date fields query results to js function日期字段查询结果到js函数
【发布时间】:2017-05-15 22:00:21
【问题描述】:

在 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 },{...

在玉视图js块中,这个sn -p:

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"]

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

【问题讨论】:

  • booked 在哪里定义用于将其传递给代码中的 js 函数?
  • booked 是控制器中视图查询中的一个键 根据文档:视图类还提供了一个 query(key, query, options) 方法,用于在呈现视图之前将 mongoose 查询排队等待执行.查询结果设置在locals[key]中。keys可以是嵌套路径,包含对象会根据需要创建。第三个参数可以是查询完成后调用的方法,如function(err, results,回调),或填充的相关定义(字符串或数组)。

标签: node.js mongodb keystonejs bootstrap-daterangepicker


【解决方案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 的日期,则books 中的endDatestartDate 属性需要正确格式化以进行比较(否则将始终返回-1)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2012-09-10
    • 2020-10-07
    • 2015-07-15
    • 2018-05-31
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多