gpt4 book ai didi

javascript - 有时 Handlebars 不加载对象

转载 作者:行者123 更新时间:2023-12-03 04:26:57 25 4
gpt4 key购买 nike

我正在尝试使用通过 res.render() 传递的对象来创建 div。但是,有时会创建 div,有时则不会(如果我刷新页面)。我也使用 Bootstrap。

js/express:

router.get('/', checkSignIn, function(req, res, next) {
db = new sqlite3.Database(file);
var tasks = {};
db.serialize(function () {
var query = "SELECT tasks.id, tasks.name, tasks.status FROM tasks JOIN users ON users.privilege = tasks.privilege WHERE users.id = '" + req.session.userid + "'";
db.all(query, function (err, rows) {
for(i = 0; i < rows.length; i++) {
tasks[i] = {
name: rows[i].name,
status: rows[i].status
};
console.log(tasks[i]);
}
});
});
db.close();
res.render('index', {
title: 'Home',
css: ['style.css', 'dist/wu-icons-style.css'],
username: req.session.username,
tasks: tasks
});
});

HBs:

<div class="container">
<div class="row">
<div class="col-md-6">
<div class="panel-group">
{{#each tasks}}
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">{{name}}</h3></div>
<div class="panel-body">{{status}}</div>
</div>
{{/each}}
</div>
</div>
</div>
</div>

根据我添加的 console.log(),每次都会正确填充 tasks 对象。所以我认为问题出在 Handlebars 上。

我在这里找到了一个解决方案:Handlebars not print {{this}} in each helper ,但我不使用this。我尝试了 ./name./status,但没有帮助。有人可以帮我吗?

最佳答案

您的问题是异步 JavaScript,而不是 Handlebars 。您的 tasks 对象正在填充,但您在此之前渲染 html。如果您在 db.close() 当前位置之后使用 console.log(tasks),它将是一个空对象。您需要将渲染函数移动到数据库调用中:

router.get('/', checkSignIn, function(req, res, next) {
db = new sqlite3.Database(file);
db.serialize(function () {
var query = "SELECT tasks.id, tasks.name, tasks.status FROM tasks JOIN users ON users.privilege = tasks.privilege WHERE users.id = '" + req.session.userid + "'";
db.all(query, function (err, rows) {
var tasks = {};
for(i = 0; i < rows.length; i++) {
tasks[i] = {
name: rows[i].name,
status: rows[i].status
};
console.log(tasks[i]);
}
res.render('index', {
title: 'Home',
css: ['style.css', 'dist/wu-icons-style.css'],
username: req.session.username,
tasks: tasks
});
});
});
db.close();
});

关于javascript - 有时 Handlebars 不加载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com