如何防止 Meteor 的帐户库自动发布当前用户的电子邮件?

How to prevent Meteor's accounts-base from auto-publishing the email of the current user?

根据帐户包上的 Meteor's documentation

By default, the current user’s username, emails and profile are published to the client.

是否可以阻止 Meteor 自动发布这些字段?我知道它仅适用于已登录的用户,但该用户可以在某处散步或上网 public。

此代码结构似乎在 accounts_server.js 中定义(搜索自动发布和电子邮件 - 第 37 和 696 行)。

最直接的方法是修改 Accounts._defaultPublishFields.projection 的值并删除 emails 键。在保持其他值的同时执行此操作的一种简单方法是使用 rest 和 spread 的组合,如下所示:

import { Accounts } from 'meteor/accounts-base';

const { emails, ...fields } = Accounts._defaultPublishFields.projection;
Accounts._defaultPublishFields.projection = { ...fields };

只要确保它在服务器上运行就可以了。