gpt4 book ai didi

node.js - 使用 include 从 sequelize 访问内部连接数据

转载 作者:行者123 更新时间:2023-12-03 22:17:38 24 4
gpt4 key购买 nike

我正在尝试使用 Sequelize 的 include 连接两个表:

  models.user.findAll({include: {model: models.boardMember, required:true}})
.then(function(board) {
console.log(board);
res.render('contact', { title: 'Kontakt', board: board });
});

我的模型使用 sequelize express example 看起来像这样:

用户(在这里而不是在 boardMembers 中使用 hasMany 感觉不太正确,但我不想在用户表中包含外键字段)
module.exports = function(sequelize, DataTypes) {
var user = sequelize.define('user', {
//lots of normal user fields(username, password, access...
}, {
classMethods: {
associate: function(models) {
user.hasMany(models.boardMember, {
foreignKey: {
allowNull: false
}
});
}
}
});

return user;
};

董事会成员
module.exports = function(sequelize, DataTypes) {
var boardMember = sequelize.define('boardMember', {
post: {
type: DataTypes.STRING,
unique: false,
allowNull: false
}
});
return boardMember;
};

然后我想使用 Handlebars 访问表中返回的数据:
{{#each board}}
<tr>
<td>{{boardMembers.post}}</td>
<td>{{firstName}} {{surName}}</td>
<td>{{email}}</td>
</tr>
{{/each}}

这是我弄错的地方(我认为)。显示姓名和电子邮件,但不显示帖子。我也尝试过只使用帖子,但无济于事。我认为这很奇怪,因为生成的查询看起来像这样(我删除了 createdAtupdatedAt 列以使其更短以供您阅读):
SELECT 
`user`.`id`, `user`.`username`, `user`.`password`,
`user`.`firstName`, `user`.`surName`, `user`.`email`, `user`.`access`,
`boardMembers`.`id` AS `boardMembers.id`, `boardMembers`.`post` AS `boardMembers.post`,
`boardMembers`.`userId` AS `boardMembers.userId`
FROM
`users` AS `user`
INNER JOIN
`boardMembers` AS `boardMembers` ON `user`.`id` = `boardMembers`.`userId`;

console.log 输出类似这样的东西(数据明显改变了):
[ Instance {
dataValues:
{ id: 2,
username: 'username',
password: 'hashedPassword',
firstName: 'User',
surName: 'Name',
email: 'user@name.com',
access: '0',
boardMembers: [Object] },
...
]

任何帮助都是 非常感谢 !

谢谢,

弗里斯

最佳答案

根据 sequelize documentation,包含属性的值是一个列表。

您可以尝试使用特殊值 include: [{ all: true, nested: true }] 并查看它是否适合您。

此外,您的模板存在问题,因为您已经建立了一对多关系,因此模型实例的 boardMemebers 属性是数组。

关于node.js - 使用 include 从 sequelize 访问内部连接数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39755909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com