gpt4 book ai didi

javascript - 在 Meteor 的函数中使用 .find().fetch()

转载 作者:可可西里 更新时间:2023-11-01 09:24:22 24 4
gpt4 key购买 nike

我正在用 Meteor 做一个项目,我在尝试用 JavaScript 从 mongodb 中获取数据时遇到了一些问题。我在函数中有以下内容:

console.log(Time.find({today: "Saturday"}).fetch());

在服务器端的 publish.js 文件中,我有以下内容:

Meteor.publish("time", function () {
var currentUserId = this.userId;
return Time.find({user: currentUserId});
});

在我的订阅文件中,我有以下内容:

Meteor.subscribe("time");

此函数稍后在代码中被调用,但它返回一个空数组。如果我在我的浏览器控制台中运行这段代码,它会返回一个包含 2 个对象的数组,这是正确的。这让我想知道我是否可以在我的代码中使用 .fetch() 函数?就好像我离开了 .fetch() 它返回的东西看起来像通常的巨型对象。我真正的问题是我需要 .fetch() 给我的形式的数据。我认为这是因为函数在数据有机会加载之前被触发,就好像我切换了 .fetch()对于 .count() 它返回 0。

有什么解决办法或修复方法吗?

最佳答案

你在哪里运行那个 console.log?

我相信您可能已经忽略了这里的几个基本原理。

1 个发布/订阅

这就是我们从服务器获取数据的方式,当我们订阅一个发布 i 变得活跃并开始发送数据时,这既不是即时的也不是同步的,(更像是打开软管),所以当你运行你的 console.log,你可能还没有客户端上的数据。

2 react 上下文

在 meteor 中构建任何东西的一个基本方面是它的 react 性。它有助于开始根据 react 性和非 react 性上下文进行思考。响应式(Reactive)上下文是每次它所依赖的数据发生变化时重新运行的上下文。使用自动运行(Tracker.autorun 或 this.autorun 独立于模板生命周期回调)或模板助手是很好的例子。通过将其放置在模板助手中,它将在数据可用时重新运行。

Template.Whatever.helpers({
items: function() {
// ...do your find here.....
}
});

由于项目是一个响应式(Reactive)上下文,它取决于收集的数据,当数据发生变化时它会重新运行,让您可以在客户端拥有数据时访问这些数据。

3 检索非 react 性数据

或者,也可以通过使用 Meteor.call 和 meteor 方法以非 react 方式检索数据,然后在 Meteor.call 的回调中对结果做一些事情。根据您正在做的事情,Meteor.wrapAsync 也可能是您的 friend 。

一个简单的例子(出于我的头脑,未经测试):

// on the server
Meteor.methods({
gimmeStuff: function() {
return "here is your stuff kind sir!";
}
});

// on the client
Meteor.call('gimmeStuff', function(err, result) {
if (err || !result) {
console.log("there was an error or no result!");
return false;
}

console.log(result);
return result;
});

4 您不太可能真的需要 .fetch()

  • 如果您在模板中使用它,则不需要提取。
  • 如果您希望它是非 react 性的,则不需要获取
  • 正如其中一位评论者所提到的,游标只是该数组的包装器,为您提供方便的方法和 react 性。

5 回到起点

如果您还没有,我强烈建议您仔细、彻底地学习 meteor 站点上的教程,因为它涵盖了解决比这更具挑战性的问题所需的所有基本要素,以及,通过示例,教您使用 Meteor 构建出色应用程序的所有基 native 制。

关于javascript - 在 Meteor 的函数中使用 .find().fetch(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34105175/

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