【发布时间】:2018-12-18 01:26:45
【问题描述】:
当我在查询中添加包含时遇到问题,我不知道为什么。我有两个模型:User 和 Transaction
用户
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define('User', {
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: DataTypes.STRING
}, {});
User.associate = function(models) {
User.hasMany(models.Transaction, {
foreignKey: 'senderId',
as: 'sender',
}),
User.hasMany(models.Transaction, {
foreignKey: 'receiverId',
as: 'receiver',
})
};
return User;
};
交易
module.exports = (sequelize, DataTypes) => {
var Transaction = sequelize.define('Transaction', {
amount: DataTypes.INTEGER
}, {});
Transaction.associate = function(models) {
Transaction.belongsTo(models.User, {
foreignKey: 'senderId'
}),
Transaction.belongsTo(models.User, {
foreignKey: 'receiverId'
})
};
return Transaction;
};
迁移后senderId和receiverId都在db中可用。
尝试查询:
Transaction
.findAll({
where: { senderId: req.params.userId },
include: [{
model: User,
as: 'sender',
},{
model: User,
as: 'receiver',
}],
})
预期结果:
{
"transactions": [
{
"id": 2,
"amount": 300,
"sender": {
"id": 2,
"firstName": "John",
"lastName": "Doe",
"email": "jdoe+123@gmail.com",
},
"receiver": {
"id": 3,
"firstName": "John1",
"lastName": "Doe1",
"email": "jdoe+132@gmail.com",
}
},
{
"id": 3,
"amount": 900,
"sender": {
"id": 2,
"firstName": "John",
"lastName": "Doe",
"email": "jdoe+123@gmail.com",
},
"receiver": {
"id": 3,
"firstName": "John1",
"lastName": "Doe1",
"email": "jdoe+132@gmail.com",
}
}
]
}
但我收到错误:SequelizeEagerLoadingError
他们的关联或查询有问题吗?
【问题讨论】:
标签: node.js express sequelize.js