尝试使用新的Date()并表达年龄来计算年龄

问题描述 投票:0回答:1

我正在尝试建立一个用户在其中输入DOB的数据库,我想计算用户的年龄。我使用的是mongoDB和mongoose。我已经创建了一个架构,并希望结果显示在显示路线上。

//CREATE SCHEMA
const dbSchema = new mongoose.Schema({
    fname: String,
    lname: String,
    dob: {type: Date, default: new Date()},
    gender: String,
    id: Number
});

//CREATE SCHEMA MODEL
const db = mongoose.model("patient_data", dbSchema);

//CREATE THE SHOW ROUTE
app.get("/index/:id", function(req, res){
  db.findById(req.params.id, function(err, foundDB){
      if(err){
         console.log(err);
      } else {
         res.render("show", {newDB: foundDB});
      }
   });
});

//SHOW PAGE
 <h3><%= newDB.fname %> <%=newDB.lname %></h3>
 <p><%= newDB.dob.toDateString() %></p>
 <p>Age: <%= newDB.dob %> years</p>. <-- CALCULATE AGE HERE!
 <p><%= newDB.gender %></p>
 <h5>Medical ID: <%= newDB.id %></h5>

对不起,如果代码没有太大意义。我知道惯例是具有相同的参数和变量“ {foundDB:foundDB}”,但我对此并不陌生,但仍在努力弄清这一切。

javascript arrays mongodb date ejs
1个回答
2
投票

此答案是错误的。年龄计算未考虑出生日期。有关正确答案,请参见this question


您可以在实际上将age分配给页面之前,只需在foundDB对象上分配一个res.render()属性:

app.get("/index/:id", function(req, res){
  db.findById(req.params.id, function(err, foundDB){
      if(err){
         console.log(err);
      } else {
         res.render("show", {
             ...foundDB,
             age: new Date().getYear() - new Date(foundDB.dob).getYear()
         });
      }
   });
});

我正在使用上面的spread syntaxage对象添加一个额外的foundDB属性。

© www.soinside.com 2019 - 2024. All rights reserved.