Node.js - 从 sql 打印结果
Node.js - print result from sql
我正在尝试 运行 来自数据库的 select 查询并打印结果。但即使我在控制台中看到结果,我也没有在索引页面中看到。 (但是我在控制台中看到了结果,但它也没有正确显示。我在数据库中有 2 行,但我看到每行有 3 行。所以控制台中的结果是:2X3=6 行。)我把控制台结果截图问题结束。
app.js
中的代码
app.use('/', routes, function(req, res){
pg.connect(connect, function(err, client, done){
if(err){
return console.error('errrr', err)
}
client.query('select * from recipes', function(err, result){
if(err){
return console.error('error running query', err);
}
console.log(result.rows);
res.render('index.njk', { recipes: result.rows});
done();
});
});
});
index.njk
中的代码
<ul>
{% for name, item in recipes %}
<li>{{ name }}: {{ item.name }}</li>
{% endfor %}
</ul>
this is result of the console
你能帮我解决一下吗?
似乎(通过您的控制台图片)result.rows 是一个包含 2 个值的数组。因此,在遍历 index.njk 中的值时,recipes 是一个数组数组,不包含具有名称属性的项目。
如果您设置食谱:result.rows[0] 应该可以提供快速修复:
res.render('index.njk', { recipes: result.rows[0]});
这允许您获取数组数组中的第一个元素,这没关系,因为其中包含的数组只有 1 个元素(您真正想要的 2 个项目!)。在执行此操作之前,您应该检查 result.rows.length > 0 这样您就不会越界并收到错误。
if(result.rows.length > 0) {
res.render('index.njk', { recipes: result.rows[0]});
}else {
console.log('No rows found in DB');
}
我已经通过在 index.js 中使用以下代码块而不是使用 app.js 解决了我的问题。我不确定这是正确的方法,但现在工作正常。如有不妥之处,请指正。
router.get('/', function(req, res){
pg.connect(connect, function(err, client, done){
if(err){
return console.error('errrr', err)
}
client.query('select * from recipes', function(err, result){
if(err){
return console.error('error running query', err);
}
if(result.rows.length > 0) {
res.render('index.njk', { recordResult: result.rows});
console.log(result.rows);
}else {
console.log('No rows found in DB');
}
done()
});
});
});
我正在尝试 运行 来自数据库的 select 查询并打印结果。但即使我在控制台中看到结果,我也没有在索引页面中看到。 (但是我在控制台中看到了结果,但它也没有正确显示。我在数据库中有 2 行,但我看到每行有 3 行。所以控制台中的结果是:2X3=6 行。)我把控制台结果截图问题结束。
app.js
中的代码app.use('/', routes, function(req, res){
pg.connect(connect, function(err, client, done){
if(err){
return console.error('errrr', err)
}
client.query('select * from recipes', function(err, result){
if(err){
return console.error('error running query', err);
}
console.log(result.rows);
res.render('index.njk', { recipes: result.rows});
done();
});
});
});
index.njk
中的代码<ul>
{% for name, item in recipes %}
<li>{{ name }}: {{ item.name }}</li>
{% endfor %}
</ul>
this is result of the console 你能帮我解决一下吗?
似乎(通过您的控制台图片)result.rows 是一个包含 2 个值的数组。因此,在遍历 index.njk 中的值时,recipes 是一个数组数组,不包含具有名称属性的项目。
如果您设置食谱:result.rows[0] 应该可以提供快速修复:
res.render('index.njk', { recipes: result.rows[0]});
这允许您获取数组数组中的第一个元素,这没关系,因为其中包含的数组只有 1 个元素(您真正想要的 2 个项目!)。在执行此操作之前,您应该检查 result.rows.length > 0 这样您就不会越界并收到错误。
if(result.rows.length > 0) {
res.render('index.njk', { recipes: result.rows[0]});
}else {
console.log('No rows found in DB');
}
我已经通过在 index.js 中使用以下代码块而不是使用 app.js 解决了我的问题。我不确定这是正确的方法,但现在工作正常。如有不妥之处,请指正。
router.get('/', function(req, res){
pg.connect(connect, function(err, client, done){
if(err){
return console.error('errrr', err)
}
client.query('select * from recipes', function(err, result){
if(err){
return console.error('error running query', err);
}
if(result.rows.length > 0) {
res.render('index.njk', { recordResult: result.rows});
console.log(result.rows);
}else {
console.log('No rows found in DB');
}
done()
});
});
});