2015-03-19 9 views
7

Ho un processo di registrazione/accesso sul mio sito di meteore. Ho un modulo per registrare nuovi utenti e un modulo per accedere agli utenti.Accounts.createUser() restituisce undefined sul client

ho init utenti su serverside via

Accounts.createUser({username: "myusername", password: "mypassword"}); 

e posso accedere al mio dummyusers tramite il mio LoginForm sul client con

Meteor.loginWithPassword(username, password) 

io non so perché, ma per qualche motivo non posso creare nuovi utenti sul client. Se chiamo

Accounts.createUser({username: username, password: password}); 

restituisce undefined (Safari)

Ho controllato le stringhe di input (nome utente, password) e la sua non generano l'errore di stringhe anche puri come

Accounts.createUser({username: "test", password: "pass"}); 

rendimenti undefined su console client.

ho pubblicato e sottoscritto i miei utenti via:

Server

Meteor.publish('users', function() { 
    console.log("Server Log: publishing all users"); 
    return Meteor.users.find(); 
}); 

client

Meteor.subscribe("users"); 

anche io posso count() utenti sulla console del client, ma non posso usare Accounts.createUser() quindi la funzione createUser() non funziona nemmeno nella mia console.

Perché non posso usare Accounts.createUser() su client/console?

+1

farmi un favore, utilizzare questo 'callback function' sapere da dove arrivano gli errori,' Accounts.createUser ({nome utente: nome utente, password: password}, ​​funzione (errore, risultato) {if (errore) {console.log (error.reason}}); ' – Ethaan

+0

errore divertente' Signups forbidden'. sembra come alcuni pacchetti inutilizzati per account- ui (meteorico) erano il problema, li ho rimossi.xx per l'hack con l'errore – Dude

+0

Grazie per questo! – imarichardson

risposta

11

Accounts.createUser è una funzione asincrona sul client poiché è necessario interrogare il server per sapere se è effettivamente riuscito (il nome utente o l'e-mail potrebbe già essere in uso). Il valore di ritorno di una funzione asincrona sarà sempre undefined, quindi il risultato è previsto.

Se si inizia con un progetto vuoto e un database vuoto, si potrebbe fare:

Accounts.createUser({username: 'dave', password: 'password'}); 

che restituirà undefined, tuttavia una successiva chiamata a Meteor.userId() dovrebbe restituire una stringa.

Al fine di determinare se la chiamata è riuscita, è necessario fornire una richiamata:

Accounts.createUser({username: 'dave', password: 'password'}, function(err) { 
    if (err) 
    console.log(err); 
    else 
    console.log('success!'); 
}); 
+0

Stavo cercando un esempio di come fare il callback quando si crea un utente manualmente. – imarichardson

Problemi correlati