如何在ejb中创建动态卡片和迭代数组



我是node jsejs templating的新手。我想建一个网站。我需要使动态配置卡基于从数据库的计数。我用的是mysqlsequelize。当我使用FindAndCountAll时,我有一个数组

{
count: 3,
rows: [
patient_data {
dataValues: [Object],
_previousDataValues: [Object],
_changed: Set(0) {},
_options: [Object],
isNewRecord: false
},
patient_data {
dataValues: [Object],
_previousDataValues: [Object],
_changed: Set(0) {},
_options: [Object],
isNewRecord: false
},
patient_data {
dataValues: [Object],
_previousDataValues: [Object],
_changed: Set(0) {},
_options: [Object],
isNewRecord: false
}
]
}

我从console.log'gen'从这个api

Login: async(req,res,next) => {
try {
if(!req.body){
throw new Error(" sorry no data");
}
const { name, password} = req.body;
console.log("b",name)
const user= await models.machine.findOne({
where:{
name:m_name
},
});

if (user) {
let isPassWordCorrect =  await bcrypt.compare(password,user.password)
if(isPassWordCorrect){
const gen= await models.patient_data.findAndCountAll({
attributes:[
"p_id","gender","name",
],
where:{
m_name:machine_name
}
});
var arr = gen;
console.log(arr,"ae")
res.render('dash',{ posts: gen })
console.log(posts)
} else {
res.redirect('/Login')
}
} else {
res.status(400).json({
message:"unsuccess , an errror occured",
})
}
} catch (err) {
res.status(400).json({
message:err.toString(),
});
}
}

当我使用FindAll时,我得到这个数组的数据值。

[
patient_data {
dataValues: { p_id: '054', gender: 'M', name: 'Pau' },
_previousDataValues: { p_id: '054', gender: 'M', name: 'Pau' },
_changed: Set(0) {},
_options: {
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [Array]
},
isNewRecord: false
},
patient_data {
dataValues: { p_id: '075', gender: 'M', name: 'Dav' },
_previousDataValues: { p_id: '075', gender: 'M', name: 'Dan' },
_changed: Set(0) {},
_options: {
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [Array]
},
isNewRecord: false
},
patient_data {
dataValues: { p_id: '75', gender: 'M', _name: 'vin R' },
_previousDataValues: { p_id: '75', gender: 'M', _name: 'vin R' },
_changed: Set(0) {},
_options: {
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [Array]
},
isNewRecord: false
}
]


问题是我无法根据计数创建动态卡片并在我的ejs页面中显示它。我使用express,ejs,mysqlsequelize。我需要渲染数组,我可以,但捕捉渲染值,并显示在我的ejs页面有点混乱。有没有一种方法可以遍历这个数组并显示每张牌的值。谁能帮帮我。

Thanks in advance

问题可能是由于发送模型实例到ejs渲染器。试试这个查询:

const gen = await models.patient_data.findAndCountAll({
attributes:[
"p_id","gender","name",
],
where:{
m_name:machine_name
},
raw: true
});

raw选项将只返回数据,这更适合ejs。然后,您可以在ejs文件中执行以下操作:

<h1>
Patient Data Test
</h1>
<ul>
<% locals.posts.rows.forEach(function (patient) { %>
<li class="patient-data">
<div>Name: <%= patient.patient_name %></div>
<div>Gender: <%= patient.gender %></div>
</li>
<% }); %>
</ul>

还有,虽然我不擅长CSS,也许可以这样写:

* {
font-family: arial, helvetica, verdana, sans-serif;
}
ul {
list-style-type: none;
}
.patient-data {
box-shadow: 0 0 15px #ccc;
border-radius: 5px;
padding: 1rem;
line-height: 1.5rem;
}
.patient-data:not(:first-child) {
margin-top: 1.5rem;
}

最新更新