ExpressJS - Sequelize - 查询结果未填充到对象中
ExpressJS - Sequelize - Query Results Not Populated in Object
我设置了执行以下 sql 查询的路由:
Executing (default): SELECT `id`, `pattern`, `color`, `imageUrl`, `imageSource` FROM `images` AS `images` WHERE `images`.`pattern` = 'solid' AND `images`.`color` = 'navy-blue';
在我的本地数据库上进行测试时,它可以工作并提供结果,但我似乎无法填充我的 image
对象,然后在我的视图中使用。我觉得我在错误的地方将它作为函数参数传递,但我不确定,我的 console.log(image);
没有返回响应。
router.get('/:pattern/:color/result', function(req, res, image){
console.log(req.params.color);
console.log(req.params.pattern);
Images.findAll({
where: {
pattern: req.params.pattern,
color: req.params.color
},
attributes: ['id', 'pattern', 'color', 'imageUrl', 'imageSource']
}),
console.log(image);
//console.log(doc.descriptions_id);
res.render('pages/result.hbs', {
pattern : req.params.pattern,
color : req.params.color,
image : image
})
});
这是我的模型:
var Sequelize = require('sequelize');
var sequelize = new Sequelize('db', 'admin', 'test', {
host: 'localhost',
port: 3306,
dialect: 'mysql'
});
var Images = sequelize.define('images', {
pattern: {
type: Sequelize.STRING,
field: 'pattern'
},
color: {
type: Sequelize.STRING,
field: 'color'
},
imageUrl: {
type: Sequelize.STRING,
field: 'imageUrl'
},
imageSource: {
type: Sequelize.STRING,
field: 'imageSource'
},
description_id: {
type: Sequelize.INTEGER,
field: 'description_id'
}
});
module.exports = Images;
你应该使用 Promises
router.get('/:pattern/:color/result', function(req, res, image){
console.log(req.params.color);
console.log(req.params.pattern);
Images.findAll({
where: {
pattern: req.params.pattern,
color: req.params.color
},
attributes: ['id', 'pattern', 'color', 'imageUrl', 'imageSource']
}).then(function(image){
console.log(image);
//console.log(doc.descriptions_id);
res.render('pages/result.hbs', {
pattern : req.params.pattern,
color : req.params.color,
image : image
})
});
});
我设置了执行以下 sql 查询的路由:
Executing (default): SELECT `id`, `pattern`, `color`, `imageUrl`, `imageSource` FROM `images` AS `images` WHERE `images`.`pattern` = 'solid' AND `images`.`color` = 'navy-blue';
在我的本地数据库上进行测试时,它可以工作并提供结果,但我似乎无法填充我的 image
对象,然后在我的视图中使用。我觉得我在错误的地方将它作为函数参数传递,但我不确定,我的 console.log(image);
没有返回响应。
router.get('/:pattern/:color/result', function(req, res, image){
console.log(req.params.color);
console.log(req.params.pattern);
Images.findAll({
where: {
pattern: req.params.pattern,
color: req.params.color
},
attributes: ['id', 'pattern', 'color', 'imageUrl', 'imageSource']
}),
console.log(image);
//console.log(doc.descriptions_id);
res.render('pages/result.hbs', {
pattern : req.params.pattern,
color : req.params.color,
image : image
})
});
这是我的模型:
var Sequelize = require('sequelize');
var sequelize = new Sequelize('db', 'admin', 'test', {
host: 'localhost',
port: 3306,
dialect: 'mysql'
});
var Images = sequelize.define('images', {
pattern: {
type: Sequelize.STRING,
field: 'pattern'
},
color: {
type: Sequelize.STRING,
field: 'color'
},
imageUrl: {
type: Sequelize.STRING,
field: 'imageUrl'
},
imageSource: {
type: Sequelize.STRING,
field: 'imageSource'
},
description_id: {
type: Sequelize.INTEGER,
field: 'description_id'
}
});
module.exports = Images;
你应该使用 Promises
router.get('/:pattern/:color/result', function(req, res, image){
console.log(req.params.color);
console.log(req.params.pattern);
Images.findAll({
where: {
pattern: req.params.pattern,
color: req.params.color
},
attributes: ['id', 'pattern', 'color', 'imageUrl', 'imageSource']
}).then(function(image){
console.log(image);
//console.log(doc.descriptions_id);
res.render('pages/result.hbs', {
pattern : req.params.pattern,
color : req.params.color,
image : image
})
});
});