PSQL nodejs变量未定义

时间:2017-03-13 13:39:14

标签: sql node.js database postgresql

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

文章数据库: id |标题|价格|描述

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

当我记录数据'文章'它没有定义。

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();
    });

1 个答案:

答案 0 :(得分:0)

我建议您将Sequelize用作应用程序的ORM,因为它可以轻松处理您的数据库甚至让您直接查询数据库:

例如,您需要为数据库中的每个表定义一个类:

模型/ article.js

this.$scope.$watch('ui.shake', this.resetUiCheck)

请注意,您要与Image表定义一对多的关系。

模型/ image.js

var Article  = sequelize.define("Article", {
  id: { type: DataTypes.INTEGER, primaryKey: true},
  name: { type: DataTypes.STRING, name: 'name' },
  ...
}, {
  classMethods: {
    associate: function(models) {
      Article.hasMany(models.Image);
    }
  }
});

请注意,您指明了一条回到文章的一对一关系。

最后,您可以使用上面的类来查询您的数据库:

var Image = sequelize.define("Image", {
  id: { type: DataTypes.INTEGER, primaryKey: true},
  url: { type: DataTypes.STRING, name: 'name' },
  ...
}, {
  classMethods: {
    associate: function(models) {
      Image.belogsTo(models.Article);
    }
  }
});

在这种情况下,您查询所有文章并包含属于该文章的图像列表。

您甚至可以按照下一种语法运行普通查询:

app.get(function(req, res, next) {
  models.Article
  .findAll({
      includes: [{
        model: models.Image
      }]
  })
  .then(function(articles) {
    res.json(articles);
  });
});

您可以在此处找到有关如何在项目中配置sequelize的示例:http://docs.sequelizejs.com/en/1.7.0/articles/express/