#reactjs #database #postgresql #fetch #auth0
Вопрос:
Я пытаюсь обновить свою собственную базу данных информацией, полученной от пользователя Auth0 после входа в систему.
Все, чего я хочу, — это user.name и пользователь.электронная почта. Вход в систему работает идеально, и я могу получить доступ к информации о пользователе для отображения страницы профиля, но я не могу отправить те же данные в свою базу данных.
Ошибки/проблемы;
- Кнопка аутентификации.js:16 СООБЩЕНИЙ http://localhost:3000/newlogin 500 (Внутренняя ошибка Сервера)
- VM24:1 Неперехваченная (в обещании) синтаксическая ошибка: Неожиданный токен (Подразумевает, что информации нет?)
- ошибка: значение null в столбце «имя» отношения «клиент» нарушает ограничение not-null. (Эта ошибка подразумевает, что запрос поступает в базу данных, но без информации.)
Файл кнопки аутентификации Auth0;
import React, { useEffect } from 'react';
import LoginButton from './LoginButton';
import LogoutButton from './LogoutButton';
import { useAuth0 } from '@auth0/auth0-react';
const AuthenticationButton = () => {
const { user, isAuthenticated } = useAuth0();
useEffect(() => {
register();
},[])
const register = () => {
if(isAuthenticated) {
const { name, email } = user;
fetch('/newlogin', {
method: 'POST',
body: { name, email }
})
.then(res => res.json())
}}
return isAuthenticated ? <LogoutButton /> : <LoginButton />;
};
export default AuthenticationButton;
Server.js файл;
const express = require('express');
const app = express();
app.use(express.urlencoded({extended: false}));
app.use(express.json());
const Pool = require('pg').Pool;
require('dotenv').config();
const listenPort = process.env.REACT_APP_LISTENPORT;
//Connection to PostgreSQL Database
const pool = new Pool({
user: process.env.REACT_APP_USER,
host: process.env.REACT_APP_HOST,
database: process.env.REACT_APP_DATABASE,
password: process.env.REACT_APP_PASSWORD,
dialect: process.env.REACT_APP_DIALECT,
port: process.env.REACT_APP_DBPORT
});
//POST /customer route
app.post('/newlogin', (req, res, next) => {
const name = req.body.name;
const email = req.body.email;
pool.query('INSERT INTO customer(name, email) VALUES($1, $2)', [name, email], (err, res) => {
if(err) return next(err);
console.log(res)
})
});