我在node.js和express之上使用sequilize,以便创建一个我的反应可以使用本教程http://mherman.org/blog/2015/10/22/node-postgres-sequelize/#.WSJ77BMrLBL访问的API。我无法让数据库填充一个名为带产品的商店的对象。我现在所拥有的是:
路线:
sum =0;
for(int i =0;i<arraySize;i++){
sum+=array[i];
}
存储
// get all stores
router.get('/stores', function(req, res) {
models.Store.findAll({}).then(function(stores) {
res.json(stores);
});
});
// get single store
router.get('/stores/:id', function(req, res) {
models.Store.find({
where: {
id: req.params.id
}
}).then(function(store) {
res.json(store.productId);
});
});
// add new store
router.post('/stores', function(req, res) {
models.Store.create({
name: req.body.name,
productId: req.body.product_id
}).then(function(store) {
res.json(store);
});
});
但是当我运行 'use strict';
module.exports = function(sequelize, DataTypes) {
var Store = sequelize.define('Store', {
name: {
type: DataTypes.STRING,
defaultValue: ""
},
description: {
type: DataTypes.STRING,
defaultValue: ""
},
phone: {
type: DataTypes.STRING,
defaultValue: ""
},
email: {
type: DataTypes.STRING,
defaultValue: ""
},
image_url: {
type: DataTypes.STRING,
defaultValue: ""
},
}, {
classMethods:{
associate:function(models){
Store.hasMany(models.Product, { foreignKey: 'productId'} );
}
}
});
return Store;
}
我得到:
curl --data "name=test&product_id=1" http://127.0.0.1:5000/stores
当我导航到商店页面时,我得到相同的东西,但看不到productIds
我做错了什么?有人可以提供一些指导。
谢谢!
答案 0 :(得分:3)
Sequelize不会急于加载产品,除非您明确告诉它包含相关模型。将以下选项添加到models.Store.findById
请求中。
const options = {
include: [{
model: models.Product
}]
};
所以它写着:
models.Store.findById(req.params.id, options).then( ...
您的回复将包含一个Products
密钥,该密钥将是相关产品的数组。