gpt4 book ai didi

meteor - 向 Meteor 用户帐户添加更多字段

转载 作者:行者123 更新时间:2023-12-03 08:18:57 25 4
gpt4 key购买 nike

我正在使用 mrt add accounts-ui-bootstrap-dropdownmrt add accounts-password在我的应用程序上运行一个简单的登录页面。

帐户用户给了我一个很好的哈希值,其中包含 id、createdAt、电子邮件等。

如果我想在这个哈希中添加其他字段以便以后可以使用它们,我该怎么做?例如,我还想输入他们的名字和姓氏:

“given_name”:“约翰”,“姓”:“Doe”

最佳答案

用户是 meteor 中的特殊对象;您不想在用户中添加字段,而是在用户个人资料中添加字段。

从文档:

By default the server publishes username, emails, and profile.

如果您想在创建帐户时添加姓氏等属性,则应在 Account.onCreateUser 中使用服务器端 Hook : http://docs.meteor.com/#accounts_oncreateuser
Accounts.onCreateUser(function(options, user) {
//pass the surname in the options

user.profile['surname'] = options.surname

return user
}

如果你想在之后更新用户,你可以从客户端这样做:
Meteor.users.update({_id:Meteor.user()._id}, { $set: {what you want to update} });

默认情况下,用户群将允许这样做(当前用户可能会自行更新)。如果您不信任您的用户并希望确保一切都正确更新,您还可以禁止来自客户端的任何更新并通过 Meteor.call() 进行更新。并继续检查服务器端。但这将是可悲的。

编辑:

如评论中所述,无法通过标准帐户 UI 添加选项。您只能在注册后更新用户。要在订阅时添加选项,您必须创建自己的表单。

我不会通过编写 html 标记来侮辱您,但这是您在提交事件之后(以及在各种检查之后)想要拥有的内容:
var options = {
username: $('input#username')[0].value,
emails: [{
address: $('input#email')[0].value,
verified: false
}],
password: $('input#password')[0].value,
profile: {
surname: $('input#surname')
},
};
Accounts.createUser( options , function(err){
if( err ) $('div#errors').html( err.message );
});

您只需要 account-base 包;不是帐户用户界面。

使用社交网络登录是小菜一碟:
Meteor.loginWithFacebook({
requestPermissions: ['email', 'user_birthday', 'user_location']
}, function(error){loginCallBack(error);});

关于 ram1 的回答:

这不是 meteor 的工作方式。您不会“发布”表单。您希望通过 websocket 完成所有客户端/服务器通信。您正在谈论的等价物是从客户端创建服务器方法的“Meteor.call('myserverfunction',myarguments,mycallback)”,然后传递您希望服务器使用的参数。

但这不是你将获得最好的 meteor 的方式。您想要使用的理念是:
  • 您在本地 mini mongo 中有您从服务器获得的数据
  • 您在本地更新基础/ View 中的这些数据
  • meteor 用他的魔法将这些更新传输到服务器
  • 服务器可以回答:好的,更新已保存,这对您来说是无缝的。或者回答:不!撤消更改(您可以实现错误通知系统)

  • (它可以回答否,因为您没有更新此字段的权限,因为此更新违反了您设置的规则...)

    您所做的只是在数据库服务器端设置权限和控制。这样,当一个诚实的客户进行更新时,他会立即看到结果;在它被推送到服务器并发送到其他客户端之前。这是 延迟补偿 , meteor 七大原理之一。

    如果您通过 Meteor.call 修改数据,您将这样做:
  • 向服务器发送更新
  • 服务器检查并更新基础
  • 服务器将更新发送给客户端(包括您)
  • 你的本地基础更新和你的 View 更新 => 你看到你的更新

  • => 这是你昨天应用程序中的内容; meteor 允许您构建今天的应用程序。不要应用旧食谱:)

    关于meteor - 向 Meteor 用户帐户添加更多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23507384/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com