【发布时间】:2014-09-10 21:39:45
【问题描述】:
我正在尝试显示多对多关联,但我尝试的所有内容都返回未定义。我基本上是在尝试完全按照这个人的要求 Sails.js Associations many-to-many relation 但他没有得到任何回应。我正在使用 postgres,但我认为这并不重要。
我可以看到为链接两个实体而创建的额外表。基本上我有一个用户、组、角色模型。用户具有多对多的组和角色。当我查看表时,用户模型实际上不包含 group.name 或 role.name 之类的信息,并且创建的关系表仅包含 id 编号以引用关联。我假设我需要在关联表中找到用户 ID 与我当前用户 ID 匹配的所有角色并显示这些角色。
两个问题,有没有其他方法可以只显示关联记录而不用id查询。所以 user.roles.name (例如)。或者如何将角色/组名称添加到由sails 创建的实际关联表中,而不仅仅是显示id 号。
用户模型
module.exports = {
attributes: {
username: 'string',
password: 'string',
firstname: 'string',
lastname: 'string',
email: 'string',
group: {
collection: 'groups',
via: 'users',
dominant: true
},
roles: {
collection: 'role',
via: 'users',
dominant: true
}
}
};
组模型
module.exports = {
attributes: {
name: 'string',
users: {
collection: 'user',
via: 'group'
}
}
};
榜样
module.exports = {
attributes: {
name: 'string',
users: {
collection: 'user',
via: 'roles'
}
}
};
感谢您的帮助!
编辑
ejs 文件
<table>
<tr>
<th>ID</th>
<th>Username</th>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
<th>Groups</th>
<th>Roles</th>
</tr>
<% users.forEach(function(user){ %>
<tr>
<td><%= user.id %></td>
<td><%= user.username %></td>
<td><%= user.firstname %></td>
<td><%= user.lastname %></td>
<td><%= user.email %></td>
<td><%= user.group.collection %></td>
<td><%= user.roles.collection %></td>
<td><a href="/user/edit/<%= user.id%>">Edit</a></td>
</tr>
<% }); %>
</table>
用户控制器:
users: function(req, res) {
User.find().exec(function(err, users){
res.view({users: users});
});
},
我尝试了许多不同的 user.roles 和 user.group 变体。我猜这是完全错误的,但是除了建立多对多关系之外,没有找到太多关于其他任何东西的文档。
【问题讨论】:
-
您能否展示您用于检索记录的代码,并说明您得到的输出是什么(与您的预期相比)?
-
我在原帖的 EDIT 下添加了它。
标签: sails.js