PSQL nodejs变量未定义
从数据库中获取所有文章的功能有问题 文章数据库: id |标题|价格|说明 图像数据库: id | articleid |名称 当我记录数据“articles”时,它是未定义的PSQL nodejs变量未定义,sql,node.js,database,postgresql,Sql,Node.js,Database,Postgresql,从数据库中获取所有文章的功能有问题 文章数据库: id |标题|价格|说明 图像数据库: id | articleid |名称 当我记录数据“articles”时,它是未定义的 client.query('SELECT * FROM articles', function (err, result) { if (err) throw err; if (result.rowCount != 0) { var articles = [];
client.query('SELECT * FROM articles', function (err, result) {
if (err) throw err;
if (result.rowCount != 0) {
var articles = [];
result.rows.forEach(function (entry) {
client.query('SELECT name FROM images WHERE articleid = $1', [entry.id], function (err, result) {
if (err) throw err;
var article = [];
var images = [];
result.rows.forEach(function (entry) {
images.push(entry.name);
});
article = entry;
article.images = images;
articles.push(article);
});
});
console.log(articles);
res.send(articles);
}
res.send();
});
我建议您使用Sequelize作为应用程序的ORM,因为它可以轻松处理数据库,甚至可以让您直接查询数据库: 例如,您需要为数据库中的每个表定义一个类:
app.get(function(req, res, next) {
models.Article
.findAll({
includes: [{
model: models.Image
}]
})
.then(function(articles) {
res.json(articles);
});
});
models/article.js
请注意,您定义了与图像表的一对多关系
models/image.js
请注意,您在文章后面指出了一对一的关系
最后,您可以使用上述类查询数据库:
app.get(function(req, res, next) {
models.Article
.findAll({
includes: [{
model: models.Image
}]
})
.then(function(articles) {
res.json(articles);
});
});
在本例中,您将查询所有文章并包括属于该文章的图像列表
您甚至可以按照以下语法运行普通查询:
var queryString = 'select * from Article a join Image i on a.id = i.articleId where articleId = :articleId';
models.sequelize
.query(queryString, {
replacements: { articleId: req.params.id },
type: models.sequelize.QueryTypes.SELECT
})
.then(function(articles) {
res.json(articles)
});
在这里,您可以找到一个如何在项目中配置sequelize的示例:您最好在select中连接两个表,然后在js中循环它,我想像
select a.*,I.name FROM articles a join images I on I.articleid=a.id
是的,这就是我要做的
var queryString = 'select * from Article a join Image i on a.id = i.articleId where articleId = :articleId';
models.sequelize
.query(queryString, {
replacements: { articleId: req.params.id },
type: models.sequelize.QueryTypes.SELECT
})
.then(function(articles) {
res.json(articles)
});