常见问题
什么是 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 集合方法。
在客户端,所有内容都可以保持不变。您可以同时使用同步和异步方法。所有内容都应继续按原样工作。
例如
// 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();
无需进行任何更改。如果您想使用异步方法来维护同构代码,您可以这样做
// 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
后缀的方法。
例如
// 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
;
如果您在服务器端保留任何使用这些方法之一的代码,您将收到如下错误
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或论坛上联系我们。