如何避免 Accounts.onCreateUser 覆盖 users.profile?
How to avoid that Accounts.onCreateUser overwrites users.profile?
在客户端站点上,我有一个 extraSignupField -> 名称。这存储在 users.profile.name 中。这是代码:
Meteor.startup(function() {
Accounts.ui.config({
passwordSignupFields: 'EMAIL_ONLY'
});
AccountsEntry.config({
homeRoute: '/',
dashboardRoute: '/dashboard',
profileRoute: '/profile',
language: 'de',
showSignupCode: false,
extraSignUpFields: [{
field: "name",
label: "Name",
type: "text",
required: true
}]
});
});
在我 运行 onCreateUser 的服务器站点上,这会被触发,但它只设置那里提到的值。当 onCreateUser 到位时,不会创建 users.profile 条目。
这是服务器代码:
Meteor.startup(function() {
AccountsEntry.config({
signupCode: null
});
Accounts.onCreateUser(function (options, user) {
user.username = options.email;
return user;
});
});
我的目标是保留来自 users.profile 的数据和用户名条目。不幸的是我卡在了这一点上。
非常感谢
迈克尔
当您编写自己的 Accounts.onCreateUser 时,它会覆盖默认值。默认情况下,options.profile 被复制到 user.profile。您可以通过在您自己的函数版本中制作此副本来恢复默认行为。你在 the docs.
中看到了这个
Accounts.onCreateUser( function (options, user) {
if (options.profile) user.profile = options.profile;
user.username = options.email;
return user;
}
在客户端站点上,我有一个 extraSignupField -> 名称。这存储在 users.profile.name 中。这是代码:
Meteor.startup(function() {
Accounts.ui.config({
passwordSignupFields: 'EMAIL_ONLY'
});
AccountsEntry.config({
homeRoute: '/',
dashboardRoute: '/dashboard',
profileRoute: '/profile',
language: 'de',
showSignupCode: false,
extraSignUpFields: [{
field: "name",
label: "Name",
type: "text",
required: true
}]
});
});
在我 运行 onCreateUser 的服务器站点上,这会被触发,但它只设置那里提到的值。当 onCreateUser 到位时,不会创建 users.profile 条目。
这是服务器代码:
Meteor.startup(function() {
AccountsEntry.config({
signupCode: null
});
Accounts.onCreateUser(function (options, user) {
user.username = options.email;
return user;
});
});
我的目标是保留来自 users.profile 的数据和用户名条目。不幸的是我卡在了这一点上。
非常感谢 迈克尔
当您编写自己的 Accounts.onCreateUser 时,它会覆盖默认值。默认情况下,options.profile 被复制到 user.profile。您可以通过在您自己的函数版本中制作此副本来恢复默认行为。你在 the docs.
中看到了这个Accounts.onCreateUser( function (options, user) {
if (options.profile) user.profile = options.profile;
user.username = options.email;
return user;
}