问题标签 [meteor-publications]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
meteor - Meteor 中基于登录用户“角色”的动态发布
我希望有一些出版物只返回用户根据他们的角色有权访问的项目。我正在使用 alanning:roles 包来处理角色。
例如,我有一个出版物,如:
我遇到的问题是,在我看到的所有示例中,发布都是在服务器文件夹中的 .js 文件中定义的,因此在客户端首次连接时运行并获取。但是,当客户端首次连接时,用户并未登录。但是,我不知道将这些出版物放在哪里或它应该如何工作。
javascript - Meteor.publish:发布依赖于其他集合的集合
我有一个发布功能如下:
现在假设在某些时候对 Projects 进行了更改,结果上面Projects.findOne
返回了一个不同的项目,因此 Tasks.find 将返回其他任务。但是,对项目所做的更改不会重新发布任务
我使用了 reactivePublish,但事实证明这个包有问题(并且也没有任何单元测试)。那么,有没有一种简单的方法可以在项目更改时重新发布此发布功能?
mongodb - 我的 Meteor 出版物有什么问题?
我有一个出版物,基本上如下:
我的filingsArray
部分有问题。 filingsArray
是 Mongo $in 查询的正则表达式数组。我可以filingsArray
在出版物中硬编码为[/8-K/]
,并返回正确的结果。但是当我从路由器传递数组时,我无法让查询正常工作。请参阅下图中数组的调试内容。第二个和第三个图像是客户端/服务器调试内容,指示客户端和服务器上的相同内容,并且与我在查询中对数组进行硬编码时相同。
我的问题是:我错过了什么?为什么我的查询不起作用,或者它不起作用的一些可能原因是什么?
meteor - 即使删除自动发布,Meteor 也会发布
我正在使用流星 1.0
我有以下代码:
/lib/collections.js
/lib/router.js
/server/publications.js
/client/templates/memberList.js
我收到以下错误:
如果我将 /client/templates/memberList.js 更改为读取,我已删除自动发布位
一切正常。
谁能帮帮我吗?
javascript - 在 Meteor 中,如何将查找查询的处理结果发布为游标?
我正在用 Meteor 构建一个简单的消息传递应用程序。我在未读消息中苦苦挣扎的部分。我想返回一个列表,显示用户名(我不关心这个,请不要关注这个方面,围绕反应连接/复合等)和来自该用户的最新消息 我需要返回什么,在下面的发布功能中,是最新的未读消息,但显然每个唯一用户 ID 中只有一条。
为此,我试图在我的发布方法中操纵查找查询的结果,但我不清楚如何在不破坏反应性的情况下操纵文档集,正如我目前在下面的代码中所示,这就是我到目前为止:
我意识到我的下划线函数当然正在使用并且确实返回一个数组而不是我需要的反应光标。我知道一种解决方案是简单地提取消息 ID,然后在消息上运行另一个 .find,但是是否有另一种/更好/更有效/更自然的方式来返回带有我正在寻找的结果集的游标?
javascript - Meteor Publications and Subscriptions 用户组
我想创建一个游戏,其中一组用户(任意数量)在一个房间里玩一个实例,当事情发生时(任何用户)这个组都会得到通知。
当您说“出版物和订阅”时,如果我创建随机出版物,它会起作用吗?
我想我想说的是..如果我有 3 个不同的组,我希望它们都与 db 有不同的交互,并且通知只会在该组中发生
流星是一个很好的解决方案吗?
meteor - 实现添加、更改和删除的服务器端
上下文:我正在使用 CollectionParams
将方法从服务器调用到 C 应用程序。C 应用程序完成它的工作,然后通过 RPC 调用服务器向我发送结果。结果,我可以Params ID
删除相应的元素。随着 Element of 的删除Params
,C 应用程序会收到一条removed
消息。我想阻止这种行为以避免消息的 C 应用程序过载。
我考虑过将removed
事件实现到服务器上的 Publish 方法中,以防止服务器通知 C 应用程序。我只想让 C 应用程序了解added
事件。
在 Meteor Doc 上有一个实现的例子,added
但removed
我不明白。有人能帮我吗 ?
我试过这个(根本不工作):
meteor - Tracker afterFlush 错误:无法从模板呈现的回调中的数据上下文中读取属性的值
我正在制作一个简单的 Meteor 应用程序,当用户单击链接时可以重定向到页面。在“重定向”模板上,我尝试从模板实例中获取属性“url”的值。但我只有在第一次点击链接时才能获得正确的价值。当我按 F5 刷新“重定向”页面时,我不断收到以下错误消息:
来自 Tracker afterFlush 函数的异常:无法读取 null 的属性“url”类型错误:无法在 Template.redirect.rendered 处读取属性“url”的 null(http://localhost:3000/client/redirect.js?abbe5acdbab2c487f7aa42f0d68cf612f472683b:2:17 ) 为空。
这是 debug.js 指向的地方:(第 2 行)
你能告诉我为什么我不能从模板渲染回调中的模板数据上下文中读取“url”属性的值吗?
这是我的代码(有关更多详细信息,您可以访问我的仓库):
HTML:
主页.js
重定向.js
路由器.js
发布.js
meteor - Meteor.subscribe() 属于哪里?
我刚刚注意到我的 JS 文件顶部的订阅代码“Meteor.subscribe('my-publications')”会影响我的所有模板,而不仅仅是为其创建 JS 文件的模板。
这是出乎意料的,因为所有的演示都是这样做的。
如果我希望它只影响一个模板,订阅代码应该在哪里?在 Template.name.created() 内部?
meteor - 发布用户所在组的项目(Alanning Roles and Publications)
我正在使用Alanning Roles为我的应用程序的用户维护一组组/角色。当用户创建“应用程序”时,我为他们生成一个新角色作为app_name + UUID
,然后将其作为具有角色的组添加Admin
到创建它的用户。然后,我可以使用生成的组名加上Admin
orViewer
角色的组合来确定哪些Applications
用户有权查看和/或编辑。
我遇到的问题是我想不出一个好方法来让出版物只发布用户应该看到的东西。我知道,至少在默认情况下,发布不像客户端那样“反应性”,它们仅对返回的游标具有反应性。但是,在我的代码中,我首先创建组/角色,将其添加到用户,然后保存“应用程序”,我认为它会重新运行我的出版物,但它没有:
但是,与我认为会发生的情况相反(整个发布方法将重新运行),我猜真正发生的是只有 Cursor 是更新。因此,对于我的下一次尝试,我添加了 mrt:reactive-publications 包并简单地将光标移至用户的 Meteor.users 集合,认为这会“触发”当用户使用新的更新时重新运行发布组/角色,但这不起作用。
我最终通过简单地为用户传递组来工作:
然后我只是像Meteor.subscribe('myApplications', Roles.getGroupsForUser(Meteor.userId()))
在我的路线中那样调用出版物waitOn
,但这意味着任何客户都可以调用相同的出版物并传入他们喜欢的任何组,并可能看到他们不打算看到的文档。这似乎是一个相当大的安全漏洞。
有没有更好的方法来实现这一点,这样客户就无法哄骗他们看到不属于他们的东西?我认为唯一真正的方法是在发布方面聚集小组,但这会破坏反应性。