我的功能问题是从我的数据库中获取所有文章。
文章数据库: 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();
});
答案 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/