我在 Node.js Web 应用程序中使用 Sequelize。我有一个多对多的关系并且正在使用查找表。生成的 SQL 看起来不错,但是当我开始使用它时,只显示“组”表中的值。
这是我设置模型的方式:
//groups
m.User.hasMany(m.Group, { as: 'UserGroups', joinTableName: 'group_users', foreignKey: 'user_id' });
m.Group.hasMany(m.User, { as: 'UserGroups', joinTableName: 'group_users', foreignKey: 'group_id' });
这是由 sequelize 运行的原始 sql:
SELECT `group`.`id`, `group_name`, `created_date`, `description`, `rights`, `join_date` FROM `group`, `group_users` WHERE `group_users`.`user_id`=1 AND `group_users`.`group_id`=`group`.`id`;
这是我的代码:
user.getUserGroups({ attributes : [ "group.id", "group_name", "created_date", "description", "rights", "join_date" ] }).success(function (groups) {
content.groups = groups;
console.log(groups);
});
这是 console.log'd 的内容:
[ { dataValues:
{ id: 16,
group_name: 'chris\'s group',
created_date: Sun Dec 16 2012 17:36:46 GMT+0000 (GMT),
description: 'test test test',
rights: 4,
join_date: Tue Oct 15 2013 13:49:05 GMT+0100 (BST) },
__options:
{ timestamps: false,
createdAt: 'createdAt',
updatedAt: 'updatedAt',
deletedAt: 'deletedAt',
touchedAt: 'touchedAt',
instanceMethods: [Object],
classMethods: [Object],
validate: {},
freezeTableName: true,
underscored: true,
syncOnAssociation: true,
paranoid: false,
whereCollection: [Object],
schema: null,
schemaDelimiter: '',
language: 'en',
defaultScope: null,
scopes: null,
foreignKeyConstraint: true
....
这是在 View 中呈现的原始 JSON:
[{"id":16,"group_name":"chris's group","created_date":"2012-12-16T17:36:46.000Z","description":"test test test"},
为什么我看不到“rights: 4”正在渲染,因为这肯定会被带回来?
最佳答案
由于 rights
函数根据模型定义中定义的列名进行转换,您能否检查一下您是否在 sequelize 模型定义中定义了 toJSON()
。
关于node.js - Sequelize 不呈现结点(查找表)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23879079/