跳至内容

常见问题

什么是 Fibers?

Meteor 在回调地狱还是开发问题的时候就被设计出来了,因此团队当时决定使用fibers(协程)来使构建应用程序更容易,使用看起来同步的代码。Meteor 的 fibers 实现基于node-fibers,从 NodeJS v16.0.0 开始不再支持。

此迁移的主要原因是删除对 fibers 的依赖,并使 Meteor 与最新版本的 Node.js 兼容。

有关 fibers 的更多信息,您可以查看 Ben Newman 的此演讲以及此 Stack Overflow 答案

Meteor v3 的发布计划是什么?

Meteor 3 正式版已经发布!您可以在论坛博客上查看我们关于它的帖子。

MongoDB 集合方法会从客户端移除吗?

不会,我们不会从客户端移除任何 MongoDB 集合方法。

在客户端,所有内容都可以保持不变。您可以同时使用同步和异步方法。所有内容都应继续按原样工作。

例如

js

// 2.x in the client side

const docs = MyCollection.find({ _id: '123' }).fetch();

// v3.0 in the client side

const docs = MyCollection.find({ _id: '123' }).fetch();

无需进行任何更改。如果您想使用异步方法来维护同构代码,您可以这样做

js

// 2.x in the client side

const docs = MyCollection.find({ _id: '123' }).fetch();

// v3.0 in the client side, this will work anywhere

const docs = await MyCollection.find({ _id: '123' }).fetchAsync();

MongoDB 集合方法会从服务器移除吗?

是的,我们将移除那些不以 *Async 结尾的 MongoDB 集合方法。

您只能在服务器端使用带有 *Async 后缀的方法。

例如

js
// 2.x in the server side

Meteor.methods({
  myMethod() {
    const doc = MyCollection.findOne({ _id: '123' });
  }
});


// v3.0 in the server side

Meteor.methods({
  async myMethod() {
    const doc = await MyCollection.findOneAsync({ _id: '123' });
  }
});

客户端可用的方法有:-findOne;-insert;-remove;-update;-upsert;

如果您在服务器端保留任何使用这些方法之一的代码,您将收到如下错误

bash
findOne is not available on the server. Please use findOneAsync instead.

Meteor 的 React 包何时才能准备好用于 3.0 版?

我们认为 React 包已经准备好了。您可以在React 页面上查看更多信息。

Blaze 何时才能准备好用于 3.0 版?

Blaze 3 已经发布并且与 Meteor 3 兼容。您可以在此处查看相关帖子。

XYZ 包何时才能准备好用于 3.0 版?

Meteor 核心包是 Meteor Software 的责任,并且都正在迁移。如果您遇到任何这些包的问题,请告诉我们,请在我们的仓库打开一个问题

这是所有核心包的列表

对于那些不在核心但由社区维护的包,我们希望社区能够参与其中,但如果由于某种原因无法实现,您始终可以在Slack论坛上联系我们。