2017-10-03 10 views
0

나는 Discord 채팅 봇이 처리하는 각 길드의 ID와 이름을 PGSQL 데이터베이스 테이블에 넣으려고합니다. 나는 Discord.js module과 그 client.guilds을 JS Map 객체로 사용하고 forEach 메소드는 각 서버 이름과 ID의 각 PGSQL 쿼리를 반복한다. 내 GitHub 파일 (내 github가 heroku에 링크되어 있음)에 쓰여진 쿼리를 실행하는 과정에서 PGadmin을 사용하여 테이블을 렌더링하고 있습니다. .PostgreSQL 쿼리에서 값을 삽입하지 않습니다.

여기 내 코드입니다 :

client.guilds.forEach(function (value, key) { 
    con.query('INSERT INTO Servers (name, id) VALUES (\'' + value.name.toString() + '\', ' + key.valueOf() + ');', (err, res) => { 
    console.log(res); 
    console.log(err); 
    }); 
}); 

내 문제는 내가 내 응용 프로그램을 배포 한 후 각각의 불화 서버 이름과 ID는 해당 컬럼에 삽입되지 않을 것입니다.

답변

0

봇이 Discord에 로그인 한 후이 코드를 삽입하여 문제를 해결했습니다. 봇은 Discord API에 연결될 때까지 정보를 검색 할 수 없으므로 클라이언트가 길드 정보에 액세스 할 수 없으므로 쿼리가 먼저로드되지 않습니다. 이것을 client.ready 이벤트에 배치하기로 결정했습니다.

client.on('ready',() => { 
    console.log(`Logged in as ${client.user.tag}!`); 
    client.guilds.forEach(function (value, key) { 
    con.query('INSERT INTO Servers (name, id) VALUES (\'' + value.toString() + '\', ' + key.valueOf() + ');', (err, res) => { 
     console.log(res); 
     console.log(err); 
    }); 
    }); 
    con.end(); 
});