问题标签 [minimongo]
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.
javascript - 有没有办法在反应式 Meteor 模板的元素上保留数据属性?
我正在尝试使用 Meteor 构建一个简单的游戏。我有一个“游戏”集合,其中每个游戏都有一个状态,即用于网格的 7x7 数据数组。
我有 3 个模板,游戏表,该表的一行和该表的一个单元格:
第一个中的 GameObject 上下文是我收藏中的一个游戏 - 它有一个名称和一个 7x7 数组的状态。
为了处理每个元素上的点击事件,我在它们呈现时为其分配了一个数据属性,如下所示:
我没有在这里使用会话,因为它似乎没有必要,但我已经尝试过并且遇到了同样的问题。
这基本上是在渲染时将 49 个正方形从 0 到 48 标记,即按顺序。然后我可以很容易地将其转换为它们的网格位置并识别单击的正方形。
问题在于,在任何状态更改时,Meteor 似乎都会重新渲染整个 DOM 并为每个正方形重新调用该渲染方法。这当然意味着他们的数据属性会失控,因为它只是不断迭代。据我所知,解决方案似乎是如果我能以某种方式固定这些数据属性,以便新渲染的 dom 只保留它们而不是重写它们。
我真正想做的就是根据状态数组中的值更改每个网格空间上的一个类(值是 r=red、b=blue 等,但只是用作 CSS 类) - 所以如果我在做什么完全疯了,这也将是非常有用的反馈!我真的很难弄清楚我应该如何识别哪个被点击了,但如果不是这样的话。
在此先感谢您的帮助,如果我能提供任何澄清,我将很高兴。
javascript - 来自 MongoDB 键的动态频率图
我正在通过 Meteor 使用 MiniMongo,并且我正在尝试根据一组动态查询创建一个频率表。
我有两个主要领域,localHour
和localDay
. 我预计会有很多重叠,我想确定重叠最多的地方。我目前的做法是这样的。
本质上,每次我要插入新数据时都会运行此代码。目前它工作正常,因为在插入所有数据后,我可以按频率排序以找出最常出现的时间和日期集(TempStats.find({}, {sort: {freq: -1}}).fetch()
)。
但是,我正在寻找一种按频率搜索任何键的方法。例如,搜索所有事情最常发生的那一天,而不是日期和时间。以我目前的方式,我需要有多个数据库和不同的插入方法,这有点荒谬。是否有 Mongo(特别是 MiniMongo)解决方案可以根据键进行频率映射?
谢谢!
javascript - 流星 minimongo 获得不一致的 collection.findOne() 结果
几个小时以来,我一直在尝试调试一段代码,将我的头撞到墙上,最后将我的问题定位到代码中将 collection.findOne() 调用的结果分配给变量的地方是给我的数据与我在上一行使用相同 findOne() 的 console.log() 看到的数据不同。
集合对象有一个“测试”数组。在本例中,数组包含 3 个对象作为其元素。
虽然两个 console.log() 行都返回类似这样的内容
展开每个显示不同的数据。第一个显示正确的测试:Array[3],第二个显示测试:Array[1],并且该数组中的单个元素也具有与完整数组中的匹配元素不同的数据。
----更新----
做一些进一步的测试,我已经改变了一点代码。
1 返回:
2 回报:
3 回报:
4 处的 for 循环重复 3 次,并打印出 tests 数组中的三个对象中的每一个。
显然这意味着我可以访问我需要的数据。代替
这给我留下了一个只有一个元素的数组,我只需要获取 stTmp.tests 的长度,然后使用 for 循环按索引访问每个元素并将它们插入到 testArray 变量中。
所以我可以继续,但我仍然不明白我看到的行为。在这一点上,我处于继续取得进展的时间线上,但是当我有时间时,我可能会重新审视它并尝试以流星垫或其他我可以共享完整代码的形式复制它。
javascript - 如何使用流星改进数据处理
仍然在我的流星应用程序上,我现在想知道如何从 minimongo 改进我的数据处理。
习惯了 SQL / PHP,我想知道如何从我的 minimongo 集合中查找()一个对象,并使用助手访问它的每个属性,而不必每次都重新访问该集合。
到目前为止,我所做的是这样的:
[...] });
但它变得越来越无聊,我想必须有一种更有效的方法来处理它,我可以只加载一次我的整个用户信息,然后用一个带一个参数的助手显示,这样显示数据:{ {数据名称}},{{数据电话}}
只有一个这样的助手:
当然,我可以使用会话值,但我不确定它是否与我能做的一样相关。
另一件事:如何结束 Meteor 会话?因为使用 PHP,会话在浏览器关闭时结束,cookie 会保留给定的持续时间,但是使用流星会话,我不必日复一日地重新连接,我的日志似乎会保留。
有人会指导我完成这个或给我一些好习惯/提示吗?我仍在阅读文档,但它非常庞大:S
谢谢 !
meteor - Meteor minimongo 插入方法不起作用
我正在关注meteortips 中的流星教程,然后我进入了在浏览器控制台中创建集合的部分。创建集合有效,但它不允许我向其中插入任何内容。(PlayersList = new Meteor.Collection('players');
)
请看下面:
更奇怪的是,我什至可以像插入工作一样取回哈希。键入PlayersList.find().fetch();
返回一个空数组:(
我在 Windows 8.1 和 MongoDB 版本 2.6 上使用最新版本的 Meteor
如果有人可以帮助我,我将非常感激:)
meteor - 如何根据 Minimongo 中的参数从文档中返回子文档?
简短的问题
有没有办法在客户端过滤文档?
长问题
所以我在当前的 Meteor JS 项目中有用户帐户,用于存储子文档,例如电子邮件和漫画。
我还有一个名为“Volumes”的不同集合,它在单击时将 _id、appearanceName、coverArt、heroName、publisher 和 volNo 传递给漫画数组。我目前有一个 {{#each}} 显示卷中的文档。如果“漫画”数组中存在某个漫画,并且如果漫画数组中项目的 _id 与 Volumes _id 匹配,我想在客户端显示某个链接,如果它不满足这两个要求,则显示不同的链接。由于聚合不起作用,我完全被卡住了。提前谢谢。
javascript - 从模板助手流星 / mongodb 访问 minimongo
我正在尝试在 html 页面的 Minimongo 中访问我的 Products 集合。当我在浏览器控制台中时,我可以输入Products.findOne();
,它会返回一个产品。
但是,当我尝试从模板帮助程序返回产品时,我得到了未定义。有人想吗?
mongodb - Publish cursor with simplified array data
I need to publish a simplified version of posts to users. Each post includes a 'likes' array which includes all the users who liked/disliked that post, e.g:
I'm trying to send a simplified version to the user who subscribes an array which just includes his/her like(s):
I know I could change the structure, including the 'likes' data within each user, but the posts are usually designed to be short-lived, to it's better to keep that data within each post.
meteor - 流星收集更新焦点和模糊延迟
我正在尝试将用户内容保存为模糊状态,并且在保存后遇到了一个奇怪的 UI 冻结,这是我以前从未见过的。
模板的简化版本:
换句话说,我们遍历Questions
集合中的光标,该光标选择用户必须回答的所有问题,并使用集合中包含该用户对该问题的回答textarea
的值填充 。UserSessions
对于它的价值,textarea
它实际上是在它自己的模板中(那里还有其他东西要显示,所以我认为最好将它们隔离)。
用户可以修改他的响应的内容,然后我有一个事件处理程序,基本上是这样做的:
更新成功但浏览器在保存执行后冻结了大约一秒钟,因此如果用户单击另一个元素触发了模糊,则该元素不会清晰地聚焦。这是一个问题,因为我还想在用户打字时定期保存,但是当我这样做时,打嗝会打断打字:由此产生的体验非常残酷。
有趣的是,浏览器似乎只在被更新的属性是对象或列表时才会冻结。换句话说:
UserSessions.update({_id: userSessionId}, {$set: {"questions.questionId": "someVal"}})
导致冻结,就像UserSessions.update({_id: userSessionId}, {$set: {"lastSavedAt": new Date()}})
.
但是,UserSessions.update({_id: userSessionId}, {$set: {"someOtherProp": "someVal"}})
工作正常。
我尝试了几种不同的方法,包括异步客户端模式和在一个if (Meteor.isServer)
块中通过 Meteor 方法执行保存——结果都是一样的。必须与发布更新有关,但即使我将发布功能查询设置为{reactive: false}
.
我没主意了。一如既往,我们非常感谢您的帮助。
在此先感谢,分贝
meteor - 更新操作预览结果
是否可以在执行实际更新查询之前将修饰符应用于文档并查看结果?
类似于虚拟/模拟更新。
我的目的是before
通过外部服务验证挂钩内的任何可能更新,该服务只接受一些最终的操作后文档,然后可能中止操作。