问题标签 [meteor]

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.

0 投票
1 回答
1388 浏览

json - 从流星服务器发出 JSON API 请求

我有一个 Meteor 应用程序,我要从服务器上的另一个服务发出 JSON API 请求。

我尝试使用 JQuery 包和 $.getJSON 但由于 JQuery 包对服务器没有任何影响,我很快发现这不起作用。

如何让服务器发出 JSON 请求?

0 投票
3 回答
20360 浏览

javascript - 在服务器上调用 Collection.insert 时,“流星代码必须始终在 Fiber 内运行”

我在 server/statusboard.js 中有以下代码;

基本上,它从 JSON 提要中提取一些数据并尝试将其推送到集合中。

当我启动 Meteor 时,出现以下异常;

我不太确定那个错误是什么意思。有没有人有任何想法,或者可以提出不同的方法?

0 投票
1 回答
612 浏览

meteor - Meteor 中的包类范围

我在编写包时遇到了一些问题,也许有人可以提供帮助。我正在尝试包含新的 npm 模块并将它们添加到 Meteor 类中。

因此,例如在我的 package.js 中,我声明:

这很好用,我可以控制台记录它并显示对象。但是在里面Package.on_use(我不能使用 Meteor 类:Meteor is not defined - 在使用 Meteor 类之前,我什至尝试过使用启动包而不看。

在包含使用的 js 文件中:api.add_file我无法获取 mongoose 类: mongoose is not defined

0 投票
1 回答
1686 浏览

meteor - 订阅集合中的更改但不在模板中

我对流星很陌生,所以如果我在这里遗漏了一些非常基本的东西,我深表歉意。

我认为创建一个非常简单的文本板样式的应用程序来检查流星会很有趣。我使用 todo 应用程序并将数据结构更改为“文件夹”和“文档”而不是“列表”和“待办事项”,所以我有一个文件夹列表,当你点击文件夹时,你会得到一个文档列表在那个文件夹中。

然后,当单击列表中的一个文档时,我添加了一些代码来显示单个“文档”的“内容”属性。

我正在使用 ace 为文档的内容添加一些漂亮的打印(https://github.com/ajaxorg/ace)。我已经将 ace 设置为使用包含我的文档的纯文本版本的隐藏文本区域,并且编辑器对象获取此文本并漂亮地打印它。

ace 的问题是,我不希望每次文档内容更改时都替换包含 ace 编辑器的模板(因为重新初始化需要半秒钟,在键入每个字符后这是一种糟糕的体验!) . 相反,我想更新 textarea 模板,然后使用 ace API 告诉编辑器根据 textarea 中的内容更新它的输入。

现在,这可能是解决问题的错误方法,但我最终使用了两个模板。第一个包含一个包含 doc.contents 的 textarea,它对底层模型是反应性的:

第二个包含 ace 用来显示漂亮打印文本的“编辑器”div。

这个想法是第一个模板将在每次用户输入时更新(在所有客户端上),第二个模板只会为我们加载的每个新文档重新加载。

当您在编辑器 div 中输入文本时,我会调用Docs.update(doc_id, {$set: {content: text}});,它会更新每个客户端上 textarea 中的值。到目前为止一切都很好。

对于进行更改的客户端以外的所有客户端,我想要做的是订阅该文档的更改并使用刚刚更改的文本调用 editor.getSession().setContent(),获取文本从文本区域并使用它来填充编辑器。

我试图通过从包含 textarea 的模板中进行调用来做到这一点(因为每当更新文档时它都会改变 - 请参见上面的 #1)。但是,这会使客户端陷入无限循环,因为更改编辑器中的值会导致再次调用Docs.update.

显然,当您渲染模板时不会发生这种情况,所以我假设流星中有一些魔法可以防止这种情况发生,但我不确定如何。

有什么想法吗?

蒂亚!

0 投票
1 回答
810 浏览

meteor - Meteor 应用程序中的元素保存错误

我在 Meteor 中做了一个 watch-as-I-type 实时聊天服务,但我在 Meteor 中的内置元素保存功能上遇到了问题。基本上,当其中的文本输入具有焦点时,我需要不更新当前的聊天消息 div。该文档具有以下说明:

手写应用程序中的另一个棘手问题是元素保存。假设用户在一个元素中输入文本,然后包含该元素的页面区域被重绘。用户可能会遇到颠簸,因为焦点、光标位置、部分输入的文本和重音字符输入状态将在重新创建时丢失。

这是 Meteor 自动解决的另一个问题。只需确保您的每个可聚焦元素都具有唯一的 id,或者在具有 id 的最近的父级中具有唯一的名称。Meteor 将保留这些元素,即使它们的封闭模板被重新渲染,但仍会更新它们的子元素并复制任何属性更改。

按照这些指示,我为我的输入字段设置了一个唯一的 ID,以确保在我输入时它不会被重新渲染。但现在我面临以下两个问题:

其他人的聊天消息会在他们键入时更新,但在我键入自己的消息时此更新会暂停。一旦我停止输入(即使我的输入字段有焦点),他们的消息就会再次开始更新。

创建新消息并插入其 div 时,即使其输入字段具有焦点,我的消息也会更新/重新呈现。这会导致它突然失去焦点。

您可以在http://babble.im的同一聊天室中使用两台不同的计算机/用户进行测试。

这是 Meteor 代码中的错误,还是我自己的错误?我怎样才能知道?

编辑:

啊,我想我找到了第一个问题的原因:

Meteor 通常会批量处理任何需要的更新并仅在您的代码未运行时执行它们。这样,您可以确定 DOM 不会从您的下方发生变化。有时你想要相反的行为。例如,如果您刚刚在数据库中插入了一条记录,您可能希望强制更新 DOM,以便您可以使用 jQuery 之类的库来查找新元素。在这种情况下,调用 Meteor.flush 立即更新 DOM。

我猜我的代码在用户输入时正在运行,所以 DOM 没有被更新。我会尝试使用Meteor.flush来修复它。现在第二个问题是怎么回事?

0 投票
3 回答
30596 浏览

javascript - Meteor JavaScript 框架是如何工作的?

我遇到了Meteor,虽然它看起来很令人兴奋,但我想知道它是如何工作的。我的意思是传统的 Web 应用程序是这样工作的:您在服务器上有脚本,这些脚本从数据库中获取数据并将其动态添加到网页中,并且用户提交的数据通过其他一些脚本添加到数据库中。

但是这些东西在 Meteor 中是如何工作的呢?Meteor 的不同部分如何相互关联?

0 投票
1 回答
4510 浏览

meteor - 流星中的 cursor.observe({add}) 行为

当数据添加到数据库时,我试图向用户显示警报。所以我写了(在客户端):

而且我发现,当新项目添加到服务器端的数据库时,不仅会显示警报(我认为这是正常的:)),而且当我刷新页面时,还会为每个先前添加的项目显示警报。我想 Meteor 在启动时从 Mongo 数据库中获取所有数据(以填充本地 Minimongo DB),然后为本地数据库中添加的每个项目触发“添加”事件。

但这是正常的行为吗?如何仅接收“真正”添加到服务器数据库中的项目?

0 投票
7 回答
6589 浏览

meteor - 在 Meteor 中的模板之间共享功能

如果我有两个车把模板想要检查同一个函数的返回值怎么办?有正确的方法吗?显然我可以这样做:

但是有没有办法直接通过 Template 对象来做到这一点?由于这是 JavaScript,我可以将函数分配给任何对象的任何属性,但我尝试这样做:

当然模板没有找到这个功能。

只是对最佳实践等感到好奇。谢谢!

0 投票
1 回答
11688 浏览

javascript - 如何从模板访问对象的属性?

根据http://handlebarsjs.com/expressions.html,我应该能够做到这一点:

但我似乎无法让它在流星中工作。这是我的模板:

这是返回项目的 JavaScript:

是的,该项目确实有一个名为name:-)

当我这样做时,我在 Firebug 中看到一个错误,上面写着ret is undefined

这可以追溯到evaluate.js:

在发生错误的那一刻,ret引用该window对象。那是怎么回事?

0 投票
2 回答
484 浏览

qunit - 流星与 QUnit

我正在尝试将 QUnit 与 Meteor 应用程序一起使用。这应该可能吗?有什么推荐的款式吗?

我试图通过为“/test”创建路由来制作一个“自我测试”的应用程序,但 QUnit 似乎没有运行我的测试(没有出现测试输出)。