gpt4 book ai didi

Meteor 在根级别向用户帐户添加其他字段

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

如何将其他字段添加到用户集合中。我了解选项对象允许四个字段 - 用户名、电子邮件密码和个人资料。所以在Accounts.onCreateUser上,有没有办法在根级别添加其他字段(不在配置文件字段内)?

到目前为止,解决方案是使用 Accounts.createUser 在配置文件中添加字段,将该字段复制到根级别,然后使用 Accounts.onCreateUser 删除配置文件中的字段。这是在下面的示例中为“userType”完成的

客户端.js

Template.joinForm.events({
'submit .form-join': function(e, t) {
e.preventDefault();
var firstName = t.find('#firstName').value,
lastName = t.find('#lastName').value,
email = t.find('#email').value,
password = t.find('#password').value,
username = firstName + '.' + lastName,
profile = {
name: firstName + ' ' + lastName,
userType: selectedUserType // this is copied to root level and deleted from profile.
};

Accounts.createUser({
//NEWFIELD1: [],
//NEWFILED2: [],
email: email,
username: username,
password: password,
profile: profile
}, function(error) {
if (error) {
alert(error);
} else {
Router.go('/');
}
});
}
});

服务器.js

Accounts.onCreateUser(function(options, user) {
if (options.profile) {
if (options.profile.userType) {
user.userType = options.profile.userType;
delete options.profile.userType;
}
user.profile = options.profile;
}
return user;
});

最佳答案

设置字段的唯一其他方法是在通过方法调用创建帐户后更新用户文档。例如:

客户端

var extraFields = {
newField1: 'foo',
newField2: 'bar'
};

Accounts.createUser(..., function(err1) {
if (err1) {
alert(err1);
} else {
Meteor.call('setUserFields', extraFields, function(err2) {
if (err2) {
alert(err2);
} else {
Router.go('/');
}
});
}
});

服务器

Meteor.methods({
setUserFields: function(extraFields) {
// TODO: change this check to match your user schema
check(extraFields, {
newField1: Match.Optional(String),
newField2: Match.Optional(String)
});

return Meteor.users.update(this.userId, {$set: extraFields});
}
});

这种方法的主要问题是用户可以随时打开控制台并调用 setUserFields 方法。根据您的用例,这可能是也可能不是问题。您始终可以向该方法添加额外的检查,以防止后续更新(如有必要)。

关于Meteor 在根级别向用户帐户添加其他字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27459539/

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