无法使用“角色”包通过流星向用户添加角色

2023-12-20

我正在尝试使用 Atmosphere 上提供的“角色”包,但我无法让它与 Accounts.onCreateUser() 一起使用,我可以在 github 上获取示例。当我注册用户时,我想向他们添加角色,当我测试角色是否已分配时,它没有选择它。

这是我的代码

/服务器/用户.js

Accounts.onCreateUser(function(options, user){
  var role = ['admin'];
  Roles.addUsersToRoles(user, role);
  return user;
});

/客户端/page.js

Template.hello.events({
  'click input': function () {
    var loggedInUser = Meteor.user();
    if (Roles.userIsInRole(loggedInUser, ['admin'])) {
      console.log("Hi Admin!");
    }else{
      console.log("Please Log In");
    }
  }
});

如果您查看中使用的代码Roles包你会看到他们使用你传入的 user/userId 对用户的集合执行查询(here https://github.com/alanning/meteor-roles/blob/master/roles/roles_common.js,从第 ~623 行开始):

try {
  if (Meteor.isClient) {
    // On client, iterate over each user to fulfill Meteor's
    // 'one update per ID' policy
    _.each(users, function (user) {
      Meteor.users.update({_id: user}, update)
    })
  } else {
    // On the server we can use MongoDB's $in operator for
    // better performance
    Meteor.users.update(
      {_id: {$in: users}},
      update,
      {multi: true})
  }
}

Since onCreateUser在将用户对象插入集合之前调用(docs http://docs.meteor.com/#accounts_oncreateuser: 返回的文档直接插入到Meteor.users集合中), Roles当执行查询时找不到它。

为了解决这个问题,您必须等到用户被插入到集合中。如果你看一下Roles包中所有的示例都表明了这一点。喜欢here https://atmospherejs.com/package/roles,(第二个例子,添加了注释),以及许多其他例子:

// insert user and retrieve the id
id = Accounts.createUser({
  email: user.email,
  password: "apple1",
  profile: { name: user.name }
});

// now we can verify that the user was inserted and add permissions
if (user.roles.length > 0) {
  Roles.addUsersToRoles(id, user.roles);
}

希望这对您的问题有所帮助。所以基本上只需插入用户,然后添加权限即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用“角色”包通过流星向用户添加角色 的相关文章

  • jQuery mobile 中的文本区域高度和宽度?

    我修复了 jQuery mobile 中文本区域元素的高度 并且在纵向中得到了完美的高度和宽度 但在横向中宽度没有放大 谁能帮我 提前致谢 HTML
  • Angular UI 模式的范围问题

    我无法理解 使用角度 UI 模式的范围 虽然这里不是很明显 但我已经正确设置了模块和所有内容 据我所知 但这些代码示例尤其是我发现错误的地方 index html 其中重要部分 div class btn group div
  • 可能未处理的承诺拒绝(id 0)类型错误 GET 或 HEAD 请求不允许主体

    import React from react import FlatList ActivityIndicator Text View from react native export default class FetchExample
  • Vue 3 Composition API 提供/注入在单文件组件中不起作用

    我正在使用 Composition API 在 VueJS 3 中创建一个库 我实现了提供 注入 如中所述docs https v3 vuejs org guide composition api provide inject html i
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 为什么 setTimeout 在 Chrome 中触发两次,而在 IE 或 Firefox 中则不然?

    有人能告诉我为什么 javascript 函数 生成新号码 在 Chrome 中触发两次 但在 IE 或 Firefox 中则不会 使用 Chrome 20 0 1132 57 IE9 和 Firefox 13
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 改变 JavaScript 中的顶部填充

    以下是我在 css 中设置顶部填充的方法 body font size font size px margin 0 padding 100px 0 20px 0 width 100 important 如何使用最简单的 javascript
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 用于选择特定 div 中具有特定类的锚元素的 jQuery 选择器是什么

    我有一些这样的代码 我想选择每个 a 带有类的标签status在 div 中foo div a class status a div 你可以这样做 foo find status a
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u

随机推荐

  • 选择不具有特定类的元素的最后一个子元素

    我尝试选择没有特定类别的子元素的最后一个元素 我已经设置了一个js fiddle http jsfiddle net VATaj 2
  • 在 Woocommerce 3 中通过 ajax 提交并创建结帐订单

    我在结账表单中添加了一个按钮
  • 为什么引入新的 JSLint 错误“使用空格,而不是制表符”和“不安全字符”?

    我使用 JSLint 验证 JavaScript 已经有大约 2 年了 偶尔会有一些规则发生变化 一般来说 当 JSLint 引入新规则时 会有一个复选框可以在解析时忽略此规则 或者如果您选择不忽略它 则使您的代码符合它 然而 当我今天运行
  • android LiveData 或协程通道

    让应用程序使用 LiveData 和 ViewModel for UI 来观察存储库中的数据更新 它运行良好 现在有人提出 LiveData还没有被很好地采用 也许应该改用协程的通道 首先不确定关于LiveData的说法是否准确 我确信使用
  • Python远程过程调用(不带远程部分)

    我有一个不以 root 身份运行的 Python 服务器 它面向我正在开发的应用程序 然而 有一些应用程序功能需要访问 RAW 套接字 这意味着 root 权限 显然 我不想以 root 身份运行主服务器 因此我的解决方案是创建一个守护进程
  • SQL Server + 实体框架基础知识

    我的任务是用 C 创建一个程序来管理公司的员工 仅简要概述 每个员工的所有信息都存储在 MS SQL 数据库中 作为表示层 我必须使用 WPF 并作为与数据库的通信 LINQ to Entities 问题是 我设法自学了 WPF 但 SQL
  • 制作一个 24/7 运行并从命名管道读取的 Perl 守护进程

    我正在尝试使用 perl 制作一个日志分析器 分析器将在 AIX 服务器上的后台全天候 24 7 运行 并从系统日志将日志定向到的管道 从整个网络 读取 基本上 logs from network gt named pipe A gt pe
  • TDD:您为单元测试公开了哪些方法?

    TDD 有一个方面我从未完全理解 假设有人要求您实现一个简单的 Stack 对象 如果您的设计正确 您将得到一个非常最小且干净的 API 认为 push pop and isEmpty 除此之外 任何事情都会过度抑制需求 并让用户有太多的空
  • 导出和导入 IndexedDB 数据

    我正在制作一个供我自己使用的工具 需要一个简单的数据库 这似乎是学习 HTML5 IndexedDB API 的好机会 但重要的是我在任何时候都不会丢失数据 我想备份浏览器的配置文件目录就可以进行备份 但我也希望可能使用不同的计算机 因此导
  • 从github导入ADT Eclipse中的android项目

    我正在尝试将 android 项目从 github 导入到 ADT Eclipse 中 但当我克隆它时 它在存储库中找不到任何项目 该仓库显然是一个android应用程序项目 从源代码来看 但没有找到可以导入的项目 我的步骤如下 在 包资源
  • 在函数重载中将右值引用实现为参数

    我已经询问过有关代码审查和软件工程的问题 但该主题不适合该网站 因此我在这里询问希望这不是基于意见的 我是一名 老派 C 开发人员 我已经停留在 C 2003 但现在我已经阅读了一些有关现代 C 11 17 的书籍 并且正在重写我的一些库
  • Python3.10源码venv已经改变

    我在个人仓库上做了一些 python leetcode 在我将 Kubuntu 升级到 22 04 后 我意识到当前的 venv 不起作用 我想我需要重新创建 venv 安装了 python3 10 venv 但我无法获取并激活它 事实上
  • Apache Spark:map、flatMap、mapPartitions、mapPartitionsWithIndex 的比较

    Apache Spark map flatMap mapPartitions mapPartitionsWithIndex 的比较 欢迎提出建议 以提高我们的知识 地图 函数 它有什么作用 通过提供的函数传递 RDD 的每个元素 即功能 平
  • 优化运行时间:改变igraph中边的权重需要很长时间。有没有办法优化它?

    我正在从 osmar 对象构建的 igraph 中搜索一组边 并希望更改这些边的权重 由于我的图表很大 因此这项任务需要很长时间 由于我在循环中运行此函数 因此运行时间变得更大 有什么办法可以优化这个吗 这是代码 library osmar
  • 使用后如何从 GPU 清理和卸载 WebGL 画布上下文?

    如何清理 WebGL 上下文程序并从 GPU 和 dom element 卸载程序 缓冲区和所有内容 我想确保我们没有乱扔垃圾 另外 如果可能的话 重用画布会很好 而且我不知道是否会这样 2d or webgl语境 您可以丢失对 gl 上下
  • 在 C# 中从 Msi 中的自定义操作强制重新启动

    我们如何在 C 自定义操作中提示安装后重新启动计算机 我们使用 VS 2005 的安装项目进行安装 并且需要以编程方式决定提示重新启动 因此不会在每次安装时发生 只是在某些安装上发生 更新 我们首先正在寻找已经内置于 MSI 自定义操作系统
  • WPF 中的自定义附加事件

    我可能在这里用错了术语 但我想我正在尝试创建一个附加事件 在 Surface SDK 中 您可以执行以下操作
  • 谷歌浏览器扩展制作中的内容安全策略错误

    我正在制作一个 chrome 扩展 它将在新选项卡中打开页面上的所有链接 这是我的代码文件 清单 json name A browser action which changes its icon when clicked version
  • 如何禁用 NGINX 文件日志记录

    我对 Nginx 很陌生 注意到每当我在本地访问我的服务器时 它都会记录 我想知道 我需要创建哪些配置文件 以及将它们放在哪里 以及我必须在其中放入什么来禁用该行为 我试图防止喷出 我正在 aws 上运行我的应用程序 并收到许多格式为 17
  • 无法使用“角色”包通过流星向用户添加角色

    我正在尝试使用 Atmosphere 上提供的 角色 包 但我无法让它与 Accounts onCreateUser 一起使用 我可以在 github 上获取示例 当我注册用户时 我想向他们添加角色 当我测试角色是否已分配时 它没有选择它