Я настраиваю базу данных и подключаю ее к некоторым маршрутам. Мне удалось заставить его работать на одном маршруте, но не на другом. Маршрут 'register' работает, а маршрут 'login' - нет. Когда я пытаюсь запустить маршрут входа в систему, я получаю сообщение об ошибке cors.
Я пытался использовать console.logs, чтобы увидеть, в чем проблема. Я также попытался добавить cors на свой сервер узлов.
const app = express();
app.use(cors());
Вот код бэкенда для маршрута '/ register', который действительно работает.
app.post('/register', (req, res) => {
const { email, password } = req.body;
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("expense_tracker");
var myobj = {
email: email,
password: password,
budget: "100",
spent: "0",
expenses: [],
food: "0",
clothing: "0",
personal: "0",
entertainment: "0",
other: "0"
};
dbo.collection("users").insertOne(myobj, function(err, response) {
if (err) throw err;
console.log("1 document inserted");
console.log(response.ops);
if(email !== '' || password !== ''){
res.json(response.ops);
}else{
res.status(400).json("One of the fields is blank; couldn't return user");
}
db.close();
});
});
})
А вот где оно подключено к моему приложению реакции:
onSubmitRegister = () => {
console.log(this.state.signinPassword);
fetch('https://server-budget-blaze349.c9users.io/register', {
method: 'post',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
email: this.state.signinEmail,
password: this.state.signinPassword
})
}).then(response => response.json())
.then(user => {
console.log('user', user);
if(user){
this.props.onRouteChange('budget');
this.props.loadUser(user[0]);
}
})
}
Я получаю работающий объект JSON при запросе.
Однако, когда сделать что-то подобное для входа в систему:
app.post('/signin', (req, res) => {
const { email, password } = req.body;
console.log("FRONT END : " + password + ", " + email);
console.log("BACK END: ", database[0].password);
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("expense_tracker");
var query = { email: email, password: password };
dbo.collection("users").find(query).toArray(function(err, result) {
if (err) throw err;
console.log(result);
res.json(result.ops[0]);
db.close();
});
});
})
И передний конец:
onSubmitSignIn = () => {
console.log(this.state.signinPassword);
fetch('https://server-budget-blaze349.c9users.io/signin', {
method: 'post',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
email: this.state.signinEmail,
password: this.state.signinPassword
})
}).then(response => response.json())
.then(user => {
console.log('user', user);
if(user){
this.props.loadUser(user);
this.props.onRouteChange('budget');
}
})
}
Я получаю эту ошибку:
No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Я пытался выяснить, почему это происходит, но я все еще не совсем уверен. Любая помощь будет высоко ценится, как исправить эту ошибку 'cors'.
Спасибо