2016-08-17 2 views
1

나는 accounts-password 패키지를 사용하여 사용자 계정을 관리합니다. 나는 Accounts.createUser() 기능을 사용하여 계정을 만드는 2 가지 방법을 시도했다.Accounts.createUser가 MongoDB에서 사용자를 생성하지 않는 이유는 무엇입니까?

첫번째 방법 : 클라이언트에서 Accounts.createUser()를 호출

register.js :

Template.register.events({ 
    "submit form"(event){ 
     event.preventDefault(); 

     const email = event.target.email.value; 
     const password = event.target.password.value; 

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

두번째 방법 : 서버 방법에서 Accounts.createUser() 호출 및 호출이 방법 클라이언트로부터. Meteor: Accounts.createUser() doesn't create user

register.js :

Template.register.events({ 
    "submit form"(event){ 
     event.preventDefault(); 

     const email = event.target.email.value; 
     const password = event.target.password.value; 

     Meteor.call('createNewUser', email, password); 
    } 
}); 

methods.js : 거쳐 힌트를 얻었다 (서버) 사례 모두에서

Meteor.methods({ 
    'createNewUser'(email, password){ 
     Accounts.createUser({ 
      email: email, 
      password: password 
     }); 
    } 
}); 

을, 새로운 수집하지 않습니다 MongoDB에서 생성됩니다. 이전 컬렉션도 업데이트되지 않습니다. 내 연결 문자열이 적절합니다. 왜 이런 일이 일어나는 걸까요? 나는 서버에서 다음을 사용할 때

그러나, 문서가 생성됩니다 : 새 컬렉션 작업이 생성되어야하는 이유를 모르겠어요

Accounts.users = new Mongo.Collection("profiles", { 
    _preventAutopublish: true, _driver: dbConn 
}); 

Meteor.users = Accounts.users; 

. accounts-password 패키지가 자체적으로 컬렉션을 생성하지 않아야합니까?

+0

'Accounts.createUser'를 호출하기 전에'email' 및'password' 값을 기록했는지 확인하여 올바른 값이 있는지 확인하십시오. – hwillson

+0

예. 유효한 값이 있습니다. 나는 그것을 확인했다. 또한 항목은 mongo 컬렉션에'Accounts.users'를 설정할 때 발생합니다. – chaudharyp

답변

0

기본 버전을 설치하고 실행하는 데 관심이 있다면 기본 {{> loginButtons}}을 (를) html에 추가하십시오. 또한 자바 스크립트가 실행되도록해야합니다. js를 수동으로 빌드하는 것은 더 많은 사용자 정의가 필요한 경우에만 의미가 있습니다.

0

accounts-base 패키지를 추가 했습니까? Accounts.createUser은이 패키지에서 제공됩니다. (docs)

제공된 링크 된 예에서 OP는 Accounts.config()forbidClientAccountCreation: true을 설정했습니다. 따라서 Accounts.createUser 기능이 클라이언트에서 작동하지 않습니다 (사용자가 등록 초대장이 필요한 응용 프로그램에서 유용함). 그 대답은 사용자 계정 서버 쪽을 만드는 데 권장되며 응용 프로그램에는 적용 할 수없는 이유입니다.

두 번째 예제에서는 위험한 것으로 간주되는 암호화되지 않은 암호를 클라이언트에서 서버로 전달합니다. 당신은 너무 같은 서버 메소드로 전송하기 전에 암호화 할 수 있습니다

const password = Accounts._hashPassword(event.target.password.value); 
0

_driver: dbConn

그 라인이 정말 직결된다. 데이터베이스 연결을 직접 관리하려고합니까?

작성한 코드에 아무런 문제가 없습니다. 문제가 아닙니다.Accounts.createUser은 올바른 호출 방법입니다.

터미널에서 meteor 명령을 실행하여 기본적으로 초기화 된 데이터베이스가 아닌 다른 데이터베이스를 사용해야 할 경우 MONGO_URL 설명서를 참조하십시오.

관련 문제