我是node js
和ejs templating
的新手。我想建一个网站。我需要使动态配置卡基于从数据库的计数。我用的是mysql
和sequelize
。当我使用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
,mysql
和sequelize
。我需要渲染数组,我可以,但捕捉渲染值,并显示在我的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;
}