Meteor:如何获得useraccounts包将新用户文档写入远程集合​​?

时间:2016-02-05 13:43:14

标签: javascript mongodb meteor

我正在使用包accounts-passworduseraccounts:bootstrap,这一切都运行正常,这意味着登录表单会在Meteor.users集合中创建一个新文档。但我不希望面向应用程序的客户端上有任何集合,因此我确实有第二个应用程序运行,我通过DDP.connect()成功连接,我可以通过pub / sub和调用方法交换所有必要的文档/集合远程应用程序。

唯一不起作用的是useraccount doc。我已经使用过(在客户端应用程序上):

remote.subscribe('users', Meteor.userId(), function() {
});

和(在远程应用上):

Meteor.publish('users', function() {
    return Meteor.users.find({});
});

即使我不确定包中是否包含pub / sub。尽管如此,文档仍然写入本地(客户端)应用程序而不是远程应用程序。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

useraccounts:core只是在客户端调用的方法中使用服务器端的Accounts.createUser(请参阅this line)(请参阅this another line)。 因此,新的用户对象是从服务器端而不是从客户端创建的(尽管由于DDP和默认用户订阅而它一直流向客户端...)。

如果你真的想要改变Meteor核心Accounts软件包(accounts-baseaccounts-password在这种情况下提供...)提供的默认行为,你应该尝试覆盖Accounts.createUser方法全部开始......

在任何情况下都会被警告默认情况下当前用户已发布到客户端:请参阅these lines

最后,为防止useraccounts:core使用Accounts API,您可以尝试覆盖AtCreateUserServer方法,并在其中的远程应用程序上处理新用户的创建。 / p>

答案 1 :(得分:0)

accounts-base提供此类功能。

  

accounts-base包导出两个名为AccountsClientAccountsServer的构造函数,分别用于创建客户端和服务器上可用的Accounts对象。

     

然而,在更复杂的身份验证情况下,这两个构造函数可以多次实例化,在不同的帐户服务器及其客户端之间创建多个独立的连接

文档:Accounts (multi-server)