Javascript 页面上未呈现Sequelize.js的关联

Javascript 页面上未呈现Sequelize.js的关联,javascript,node.js,express,sequelize.js,Javascript,Node.js,Express,Sequelize.js,我有两个模型 var self = { User: sequelize.define('user', { id: {type: Sequelize.INTEGER,primaryKey: true,autoIncrement: true}, name: {type: Sequelize.STRING,allowNull: false} }), Role: sequelize.define('role', { id: {ty

我有两个模型

var self = {
    User: sequelize.define('user', {
        id: {type: Sequelize.INTEGER,primaryKey: true,autoIncrement: true},
        name: {type: Sequelize.STRING,allowNull: false}
    }),

    Role: sequelize.define('role', {
        id: {type: Sequelize.INTEGER,primaryKey: true,autoIncrement: true},      
        name: {type: Sequelize.STRING,allowNull: false} 
   })
}
我还指定了它们之间的关联

self.User.belongsTo(self.Role);
controller user.js的一部分:

list: function(req, res){
   models.User.findAll({offset: offset, limit: limit}).success(function (users) {
            if (req.params.format == 'html') {
                res.render('admin/user/list.html', {
                    title: 'Users',
                    layout: layout,
                    users: users
                });
            }   else if (req.params.format == 'json') {
                res.json(users);
            }
   }
在view list.html中:

<% users.forEach(function(user){ %>
    <tr>
        <td><%= user.id %></td>
        <td><a href="/admin/user/<%= user.id %>/show.html"><%= user.name %></a></td>
        <td><%= user.getRole().name %></td>
    </tr>
<% } %>
如何在list.html和json响应中获取每个用户的角色? 或者有更好的办法


谢谢。

不获取关联角色的原因是,获取该用户的角色是异步处理的。这意味着1。您需要使用user.getRole.successfunctionrole{}和2。您需要读取控制器中的角色,因为EJS无法处理异步性。希望有帮助:

你需要打电话

models.User.findAll({offset: offset, limit: limit, include: [models.Role]})

有关更多详细信息,请参见

因此,要创建一个包含20个用户及其角色的列表,我们是否必须执行20个附加请求以获取关联角色?但是在纯sql中,我们可以在一个查询中完成这项工作。您还可以尝试使用sequelize.query方法,该方法执行sql查询并将内容作为对象返回。然而,这更像是一个黑客,而不是其他任何东西。这就是它的工作原理:sequelize.querySELECT*FROM users,roles WHERE users.id=roles.user_id,null,{raw:true}
models.User.findAll({offset: offset, limit: limit, include: [models.Role]})