Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PSQL nodejs变量未定义_Sql_Node.js_Database_Postgresql - Fatal编程技术网

PSQL nodejs变量未定义

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 = [];

从数据库中获取所有文章的功能有问题

文章数据库: id |标题|价格|说明

图像数据库: id | articleid |名称

当我记录数据“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)
  });