Meteor 更改管理面板中的用户角色
我正在创建一个管理面板,在使用alanning:roles时,我可以通过选择控件更改用户角色。我遇到的问题是无法获取与每个select控件关联的用户。我引用了关于使用Meteor创建管理面板的内容,但当我调用该方法以更改角色时,控制台返回以下错误: 原始问题:已解决 更改的代码来自: 要更改设置userId值的方式,请执行以下操作: } 现在,Roles.setUserRoles不工作,但参数具有值 console.logoptions.role返回正确的值和 console.logoptions.user返回: 客户端代码: 服务器代码: 用户主页模板 console.logoptions.user应该打印用户的_id,而不是jQuery对象。在change[name=userRole]事件中,替换let userId=$event.target.id;使用let userId=event.target.id 分配和检索值的更好方法如下所示: HTML: console.logoptions.user应该打印用户的_id,而不是jQuery对象。在change[name=userRole]事件中,替换let userId=$event.target.id;使用let userId=event.target.id 分配和检索值的更好方法如下所示: HTML:Meteor 更改管理面板中的用户角色,meteor,alanning-roles,Meteor,Alanning Roles,我正在创建一个管理面板,在使用alanning:roles时,我可以通过选择控件更改用户角色。我遇到的问题是无法获取与每个select控件关联的用户。我引用了关于使用Meteor创建管理面板的内容,但当我调用该方法以更改角色时,控制台返回以下错误: 原始问题:已解决 更改的代码来自: 要更改设置userId值的方式,请执行以下操作: } 现在,Roles.setUserRoles不工作,但参数具有值 console.logoptions.role返回正确的值和 console.logoption
您能否在服务器上获取options.user?在将其传递给Roles.setUserRoles之前,尝试对其进行控制台日志记录。此外,如果您能向我们展示userHome模板html,也会很有帮助。我更新了设置用户值的方式,该用户值最初未定义,以便使用let userId=$event.target.id.val从事件中获取值;然后是user:userId,但是我仍然没有定义它的值@sudheerjamial,所以我确实通过调用select元素更改时的方法修复了原始问题,但是现在我意识到我的角色。setUserRoles不起作用。你能用最新的代码更新这个问题吗。ThanksUpdated代码和问题现在是event.target.id值返回一个对象,因此不是有效的param@sudheerjamiar您能在服务器上获取options.user吗?在将其传递给Roles.setUserRoles之前,尝试对其进行控制台日志记录。此外,如果您能向我们展示userHome模板html,也会很有帮助。我更新了设置用户值的方式,该用户值最初未定义,以便使用let userId=$event.target.id.val从事件中获取值;然后是user:userId,但是我仍然没有定义它的值@sudheerjamial,所以我确实通过调用select元素更改时的方法修复了原始问题,但是现在我意识到我的角色。setUserRoles不起作用。你能用最新的代码更新这个问题吗。ThanksUpdated代码和问题现在是event.target.id值返回一个对象,因此不是有效的param@SudheerJami
Error: Missing 'users' param
I20190218-14:59:27.319(-6)? at Object._updateUserRoles (packages/alanning_roles.js:684:23)
I20190218-14:59:27.319(-6)? at Object.setUserRoles (packages/alanning_roles.js:250:11)
I20190218-14:59:27.320(-6)? at MethodInvocation.changeRole (server/main.js:88:13)`
Template.userHome.events({
'click #confirmChanges': function (event) {
let currentRole = $(event.target).find('option:selected').val();
let userId = $(event.target.id).val();
console.log(userId);
if (window.confirm("Change User Roles?")) {
Meteor.call("changeRole", {
role: currentRole,
user: userId
})
window.location.reload();
}
}
})
Template.userHome.events({
'change [name="userRole"]': function (event) {
let currentRole = $(event.target).find('option:selected').val();
let userId = $(event.target.id);
console.log(currentRole);
if (window.confirm("Change User Roles?")) {
Meteor.call("changeRole", {
role: currentRole,
user: userId
})
window.location.reload();
}
}
I20190219-20:37:37.527(-6)? { length: 0,
I20190219-20:37:37.528(-6)? prevObject:
I20190219-20:37:37.529(-6)? { length: 0,
I20190219-20:37:37.529(-6)? prevObject:
I20190219-20:37:37.529(-6)? { length: 0,
I20190219-20:37:37.530(-6)? prevObject: [Object],
I20190219-20:37:37.530(-6)? context: [Object],
I20190219-20:37:37.531(-6)? selector: '3FzfDhZWcGFg6ggTE' },
I20190219-20:37:37.531(-6)? context: { location: [Object] } },
I20190219-20:37:37.532(-6)? context:
I20190219-20:37:37.532(-6)? { location:
I20190219-20:37:37.532(-6)? { href: 'http://localhost:3000/userHome',
I20190219-20:37:37.533(-6)? ancestorOrigins: {},
I20190219-20:37:37.533(-6)? origin: 'http://localhost:3000',
I20190219-20:37:37.534(-6)? protocol: 'http:',
I20190219-20:37:37.534(-6)? host: 'localhost:3000',
I20190219-20:37:37.534(-6)? hostname: 'localhost',
I20190219-20:37:37.534(-6)? port: '3000',
I20190219-20:37:37.535(-6)? pathname: '/userHome',
I20190219-20:37:37.535(-6)? search: '',
I20190219-20:37:37.536(-6)? hash: '' } } }
Template.userHome.events({
'change [name="userRole"]': function (event) {
let currentRole = $(event.target).find('option:selected').val();
let userId = $(event.target.id);
console.log(currentRole);
if (window.confirm("Change User Roles?")) {
Meteor.call("changeRole", {
role: currentRole,
user: userId
})
window.location.reload();
}
}
})
Meteor.methods({
changeRole( options ) {
console.log("Change User is Being Called");
try {
Roles.setUserRoles( options.user, [ options.role ] );
console.log(options.role)
} catch( exception ) {
console.log(exception);
}
}
});
<div class="nav">
<p class="welcomeUser">Welcome, {{#with userInfo}}{{profile.firstname}} {{profile.lastname}}{{/with}}</p>
<button id="logout" class="universalButton">Log Out</button>
</div>
<div class="pageContent">
{{#if userIsAdmin}}
<div class="adminPanel">
<table id="userTable">
<caption>Admin Panel</caption>
<tr>
<th class="usertableHead">Username</th>
<th class="usertableHead">Role</th>
</tr>
{{#each users}}
<tr>
<td class="usertableData">{{username}}</td>
<td class="usertableData">
<div class="styled-select purple rounded">
<select id={{_id}} name="userRole">
<option value={{roles}}>{{roles}}</option>
<option value="Teacher">Teacher</option>
</select>
</div>
</td>
</tr>
{{/each}}
</table>
<button id="confirmChanges" class="universalButton">Confirm Changes</button>
</div>
{{/if}}
</div>
...
<select data-id={{_id}} name="userRole">
<option value={{roles}}>{{roles}}</option>
<option value="Teacher">Teacher</option>
</select>
...
Template.userHome.events({
'change [name="userRole"]': function (event) {
let userId = event.target.dataset.id;
let currentRole = event.target.value;
console.log(userId, currentRole);
...
}
})