gpt4 book ai didi

meteor - 我如何使用 collection.find 作为 meteor 方法的结果?

转载 作者:行者123 更新时间:2023-12-01 04:56:22 25 4
gpt4 key购买 nike

我正在尝试遵循“在模板助手中使用 Meteor 方法的返回值”模式概述 here , 集合除外。

本质上,我有这样的事情:

(服务器端)

Meteor.methods({
queryTest: function(selector) {
console.log("In server meteor method...");
return MyCollection.find(selector);
}
});

(客户端)
Meteor.call('queryTest', {}, function(error, results) {
console.log("in queryTest client callback...");

queryResult = [];
results.forEach(function(result) {
// massage it into something more useful for display
// and append it to queryResult...
});

Session.set("query-result", queryResult);
});

Template.query_test_template.helpers({
query_test_result: function() {
return Session.get("query-result");
}
});

问题是,我的回调(来自 Meteor.call)甚至没有被调用。

如果我只用'return“foo”'替换方法,那么回调确实会被调用。此外,如果我在查找中添加“.fetch()”,它也会显示正常(但不再是 react 性的,这会破坏其他所有内容)。

是什么赋予了?为什么没有调用回调?我觉得我真的很亲近,只需要正确的咒语......

如果这很重要:我在客户端进行所有查询都很好,但是想尝试 _ensureIndex 之类的东西并进行全文搜索,据我所知,基本上只能通过服务器端方法获得调用(而不是客户端上的 mini-mongo)。

编辑

好的,所以我迁移了发布/订阅的东西,总的来说它们正在工作,但是当我尝试将其设置为 session 值是选择器时,它无法正常工作。可能是我把“订阅”放在哪里的问题。

所以,我有一个带有参数“选择器”的发布(目的是传入 mongo 选择器)。

在客户端,我订阅如下:
Meteor.subscribe('my-collection-query', Session.get("my-collection-query-filter"));

但它的行为参差不齐。在一篇文章中,它建议将这些放在 Templates.body.onCreate .这有效,但不会导致某些 react (即,当我在控制台上更改该 session 值时,它不会更改显示的值)。

因此,如果我按照另一篇文章的建议,它将订阅权放在调用该集合的模板的相关帮助函数中。这很好用,但是如果我有 MULTIPLE 模板调用该集合,我必须将订阅添加到其中的每一个模板才能正常工作。

这些似乎都不是正确的事情。我认为“订阅”是“放下管道并让它们在那里工作”,但这可能是错误的。

我会继续阅读文档。也许在某个地方,订阅的范围得到了正确的解释。

最佳答案

您需要发布您的数据并在您的客户端中订阅它。
如果您还没有删除“自动发布”,那么您拥有的所有内容都将自动发布。因此,当您在客户端查询集合时(例如在帮助方法中),您会得到结果。该软件包仅用于快速开发和原型(prototype)设计,但在实际应用程序中应将其删除。您应该根据应用的需求和用例发布数据。 (并非所有用户都必须查看所有用例中的所有数据)

关于meteor - 我如何使用 collection.find 作为 meteor 方法的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36905623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com