Ich verwende die ian:accounts-ui-bootstrap-3
, um Konten in meiner Meteor App zu erstellen. In dieser Anwendung verwende ich eine leicht angepasste Version, in der der Benutzer seinen Benutzernamen und sein Geschlecht angibt.Wie wird ein Profilfeldwert basierend auf Benutzereingaben in Meteor mit ian: accounts-ui-bootstrap-3 festgelegt?
Accounts.ui.config({
requestPermissions: {},
extraSignupFields: [{
fieldName: 'username',
fieldLabel: 'Username',
inputType: 'text',
visible: true,
validate: function(value, errorFunction) {
if (!value) {
errorFunction("Please write your username");
return false;
} else {
return true;
}
}
}, {
fieldName: 'gender',
showFieldLabel: false, // If true, fieldLabel will be shown before radio group
fieldLabel: 'Gender',
inputType: 'radio',
radioLayout: 'vertical', // It can be 'inline' or 'vertical'
data: [{ // Array of radio options, all properties are required
id: 1, // id suffix of the radio element
label: 'Male', // label for the radio element
value: 'm' // value of the radio element, this will be saved.
}, {
id: 2,
label: 'Female',
value: 'f',
checked: 'checked'
}],
visible: true
}, ]
});
Dies funktioniert gut und ich einen Benutzer zu erhalten, deren Daten (etwas gekürzt) sieht wie folgt aus:
{
"username" : "testuser",
"emails" : [
{
"address" : "[email protected]",
"verified" : false
}
],
"profile" : {
"username" : "testuser",
"gender" : "f"
}
}
Jetzt möchte ich die „Gender“ Wert verwenden, um ein neues Feld zu setzen genannten " avatar "entweder" generic-male.png "oder" generic-female.png ". In der Post https://stackoverflow.com/questions/34435674/meteor-accounts-entry-how-to-set-extrasignupfields-to-meteor-user-profile wird vorgeschlagen, die Konten zu verwenden. onCreateUser-Mechanismus. Also schrieb ich dies, und steckte es in die main.js Datei im Server-Katalog:
Accounts.onCreateUser(function(user){
if (user.gender=='m') {
user.avatar = "generic-male.png"
} else {
user.avatar = "generic-female.png"
}
})
Aber das erzeugt den folgenden Fehler:
Exception while invoking method 'createUser' Error: insert requires an argument
Ich nehme an, das liegt daran, dass der Benutzer Parameter nicht ist an die onCreateUser-Methode übergeben. Aber wie soll das gemacht werden?
Rückkehr 'user' in Ihrer' Accounts.onCreateUser' Funktion sollte Ihr Problem lösen. –