如何在 ejs 视图上将日期格式从猫鼬对象数组更改为字符串?

How to change the date format from a mongoose array of object to string on ejs view?

这是我的猫鼬模型

  var agentSchema = new Schema({
   
    name: String,
    debit: [{
        date: Date,
        amount: Number,
        hint: String,
     }],
  })

我需要从借记数组中获取日期并在 ejs 视图中将其更改为 dd:mm:yyyy 格式

我尝试了几种通过 datetostring 转换进行投影的方法,但它仅适用于 mongoose 对象,不适用于对象数组。

从 Date 对象中获取各个组件,并根据需要的行为将它们放置在模板文件中

let day = debit[0].date.getDate();
let month = debit[0].date.getMonth();
let year = debit[0].date.getFullyear();

您可以在 $project 阶段使用 $map 管道运算符来 对数组的每个元素应用条件。

db.collection.aggregate([
  {
    "$project": {
      "name": 1,
      "debit": {
        "$map": {
          "input": "$debit",
          "as": "d",
          "in": {
            "date": {
              "$dateToString": {
                "date": "$$d.date",
                "format": "%d:%m:%Y",
                // "onNull": "" // If Required
              }
            },
            "amount": "$$d.amount",
            "hint": "$$d.hint",
          }
        }
      }
    }
  }
])

这将提供以下输出。

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "debit": [
      {
        "amount": 23535,
        "date": "06:02:2021",
        "hint": "StringHint"
      },
      {
        "amount": 2355,
        "date": "16:03:2021",
        "hint": "StringHint1"
      }
    ],
    "name": "String"
  },
  {
    "_id": ObjectId("5a934e000102030405000001"),
    "debit": [
      {
        "amount": 25,
        "date": "22:06:2021",
        "hint": "StringHint2"
      },
      {
        "amount": 55,
        "date": "01:07:2021",
        "hint": "StringHint3"
      }
    ],
    "name": "String"
  }
]