我正在尝试建立一个用户在其中输入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}”,但我对此并不陌生,但仍在努力弄清这一切。
此答案是错误的。年龄计算未考虑出生日期。有关正确答案,请参见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 syntax向age
对象添加一个额外的foundDB
属性。