Node.js findAll sequelize,模型返回奇数值
解决此问题的原因是: 我希望列出mysql数据库上的所有事务以及相关用户 我有两个表/模型:事务和用户 交易:Node.js findAll sequelize,模型返回奇数值,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,解决此问题的原因是: 我希望列出mysql数据库上的所有事务以及相关用户 我有两个表/模型:事务和用户 交易: module.exports = function(sequelize, DataTypes) { return sequelize.define('transactions', { transaction_id: { type: DataTypes.INTEGER(11), allowNull: false, primaryKey: t
module.exports = function(sequelize, DataTypes) {
return sequelize.define('transactions', {
transaction_id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true
},
user_id: {
type: DataTypes.INTEGER(11),
allowNull: false,
references: {
model: 'users',
key: 'user_id'
}
},
account_id: {
type: DataTypes.INTEGER(11),
allowNull: false,
references: {
model: 'accounts',
key: 'account_id'
}
},
}, { tableName: 'transactions' }); };
用户:
module.exports = function(sequelize, DataTypes) {
return sequelize.define('users', {
user_id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
references: {
model: 'recipients',
key: 'created_by'
}
},
contact_id: {
type: DataTypes.INTEGER(11),
allowNull: true,
references: {
model: 'contacts',
key: 'contact_id'
}
}, }, {
tableName: 'users',
timestamps: false
});
};
我已提出以下建议:
Transaction.hasOne(User, {foreignKey:'user_id'});
User.belongsTo(Transaction, {foreignKey:'user_id'});
我的代码是:
api.get('/trx', async (req, res) => {
Transaction.findAll({
attributes: ['transaction_id','user_id','account_id'],
include: [{
model: User,
attributes: ['user_id']}]
})
.then(intrx => res.json(intrx))
.catch(res.catch_error)
});
结果是:
[
{
"transaction_id": 1,
"user_id": 4,
"account_id": 1,
"user": {
"user_id": 1
}
},
{
"transaction_id": 2,
"user_id": 4,
"account_id": 75,
"user": {
"user_id": 2
}
}
]
为什么user_id的值不同?
我希望第一个结果中的用户_id=4,而不是1,第二个结果中的用户_id=4
我做错了什么?您应该这样反转关联:
Transaction.belongsTo(User, {foreignKey:'user_id'});
User.hasOne(Transaction, {foreignKey:'user_id'});
因为
事务
有链接到用户
,即属于它。显示模型定义。我既不明白Transaction
是否有user\u id
字段,也不明白user
我已将这两个模型添加到初始问题中。