我正在构建一个可以在不登录的情况下使用的任务管理应用程序(使用artwells:meteor-accounts-guest
)。当用户注册帐户时,我希望来宾帐户的任务转移到新帐户。
我尝试使用Accounts.onCreateUser
来执行此操作,但是回调内部显示guest帐户的ID(Meteor.user()
为null)。
如何在不必相信客户端代码向服务器报告自己的访客帐号ID的情况下完成此操作?
答案 0 :(得分:0)
有多种方法可以做到这一点。我可能会将访客帐户数据与本地存储调用一起存储,每当您加载用户可以注册完整帐户的模板时,在本地保存访客帐户数据。
然后,当您调用onCreateUser时,您可以提取该数据。
您还可以执行@kyll提到的操作,并创建用于创建新用户的服务器端方法。您只需确保可以传递访客帐户ID以选择正确的访客帐户文档。
答案 1 :(得分:-1)
我犯了一个错误:Meteor.user()
中Accounts.onCreateUser
为空的原因是accounts-guest
甚至没有加载!
我最终能够访问Accounts.onCreateUser
中的两个用户ID:
Accounts.onCreateUser(function(options, user) {
currentUser = Meteor.user()
if (currentUser.profile !== undefined && currentUser.profile.guest === true)
Tasks.update({user: currentUser._id}, {$set: {user: user._id}}, {multi: true})
if (options.profile)
user.profile = options.profile;
return user;
});