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

Posted

技术标签:

【中文标题】如何将日期格式从对象的猫鼬数组更改为 ejs 视图上的字符串?【英文标题】:How to change the date format from a mongoose array of object to string on ejs view? 【发布时间】:2021-07-26 12:11:55 【问题描述】:

这是我的猫鼬模型

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

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

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

【问题讨论】:

如果你在ejs中也分享你的代码会更好 【参考方案1】:

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

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

【讨论】:

感谢回复【参考方案2】:

您可以使用$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"
  
]

【讨论】:

以上是关于如何将日期格式从对象的猫鼬数组更改为 ejs 视图上的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将对象响应对象的猫鼬聚合数组转换为json对象响应

使用 Express、Mongodb 和 EJ 显示下拉动态数据

创建包含对象数组的猫鼬模式

如何从数组更改日期格式

用于多个对象数组的猫鼬嵌套模式

要导出以编辑表单的猫鼬日期值