Я понимаю, что этот вопрос был задан забвению, но я не смог решить свою конкретную проблему с ним.
Когда я начал свой проект, у меня тоже была ошибка cors, но после добавления следующего они исчезли, до сегодняшнего дня я решил перефразировать код приложения, и он внезапно перестал работать, забавный факт, что старый код работал нормально. 1007 *
Но дело в том, что работает каждый вызов API, кроме одного. И даже лучше, он работает случайно, иногда выдает ошибку cors, а иногда нет. Вот почему я потерян.
Я скачал chrome расширение Moesif origin and cors changer
, и это, кажется, единственный способ заставить его работать. Но это недопустимое решение.
Почему это происходит?
Вот мой вызов API. Поскольку вы можете наблюдать простой вызов с некоторыми манипуляциями с базой данных, вот и все, он должен вернуть res.status, равный 100, но я не могу увидеть его при использовании расширения chrome, в противном случае он будет заблокирован ccors
//generate calendar
app.post('/generateCalendar', async (req, res) => {
const userId = req.body.userId
const yearsToLive = req.body.yearsToLive
const registerDate = req.body.registerDate
function filterDate(date) {
var stringDate = moment(date).format('YYYY-MM-DD').toString();
console.log("dentro del filter date")
var result = stringDate.match(/(?:(?!T).)*/)
return result[0];
}
function getWeeksToLive(death_date, birth_date) {
//returns the weeks to live between death and birth date, rounded to upper week
var weeks_to_live = moment(death_date).diff(moment(birth_date), 'days') / 7;
console.log("semanas a vivir: " + Math.ceil(weeks_to_live))
return Math.ceil(weeks_to_live);
}
//sets the deathDate and weeksToLive in the database
db.query("SELECT * from users where id =" + userId).then(data => {
var birth_date = data[0].birth_date
var deathDate = ""
//sets the death_date and the weeks to live
deathDate = moment(filterDate(birth_date)).add(yearsToLive, 'years')
db.query("UPDATE users SET death_date = '" + moment(deathDate).format('YYYY-MM-DD').toString() + "' , weeks_to_live = '" + getWeeksToLive(deathDate, birth_date) + "' WHERE id = '" + userId + "';").then(data => {
console.log(data)
/*******/
//Sets the yearsToLive and registerDate in the database
db.query("UPDATE users SET years_to_live = '" + yearsToLive + "' , register_date = '" + registerDate + "' WHERE id = '" + userId + "';").then(data => {
console.log(data)
db.query("INSERT INTO calendar (user_id) values ('" + userId + "');").then(data => {
console.log(data)
// res.send(data)
/*******/
//Sets all the field for the calendar
db.query("INSERT INTO calendar_field (text, rating, calendar_id, week_number) select '', 0, c.id, g.wn from calendar c join users u on u.id = c.user_id cross join generate_series(1, u.weeks_to_live) as g(wn);").then(data => {
console.log(data);
console.log("series generated")
/******/
//the lifeExpectanceSet restriction is removed and access to dashboard is granted
db.query("UPDATE user_permissions SET life_expectancy = 'false' , dashboard = 'true' WHERE user_id = '" + userId + "';").then(data => {
console.log("everything generated")
res.sendStatus(100)
console.log(data)
}).catch(err => console.log(err))
}).catch(err => console.log(err))
})
}).catch(err => {
console.log(err)
res.send(err)
})
}).catch(err => console.log(err))
})
})
Это старый код, когда он работал, я действительно ничего не делал, кроме рефакторинга некоторых вещей
//generate calendar
app.post('/generateCalendar', async (req, res) => {
const userId = req.body.userId
const yearsToLive = req.body.yearsToLive
const registerDate = req.body.registerDate
function filterDate(date) {
var stringDate = moment(date).format('YYYY-MM-DD').toString();
console.log("dentro del filter date")
var result = stringDate.match(/(?:(?!T).)*/)
return result[0];
}
function getWeeksToLive(death_date, birth_date) {
//returns the weeks to live between death and birth date, rounded to upper week
var weeks_to_live = moment(death_date).diff(moment(birth_date), 'days') / 7;
console.log("semanas a vivir: " + Math.ceil(weeks_to_live))
return Math.ceil(weeks_to_live);
}
//sets the deathDate and weeksToLive in the database
db.query("SELECT * from users where id =" + userId).then(data => {
var birth_date = data[0].birth_date
var deathDate = ""
//sets the death_date and the weeks to live
deathDate = moment(filterDate(birth_date)).add(yearsToLive, 'years')
db.query("UPDATE users SET death_date = '" + moment(deathDate).format('YYYY-MM-DD').toString() + "' , weeks_to_live = '" + getWeeksToLive(deathDate, birth_date) + "' WHERE id = '" + userId + "';").then(data => {
console.log(data)
}).catch(err => console.log(err))
})
//Sets the yearsToLive and registerDate in the database
db.query("UPDATE users SET years_to_live = '" + yearsToLive + "' , register_date = '" + registerDate + "' WHERE id = '" + userId + "';").then(data => {
console.log(data)
db.query("INSERT INTO calendar (user_id) values ('" + userId + "');").then(data => {
console.log(data)
res.send(data)
})
}).catch(err => {
console.log(err)
res.send(err)
})
//Sets all the field for the calendar
db.query("INSERT INTO calendar_field (text, rating, calendar_id, week_number) select '', 0, c.id, g.wn from calendar c join users u on u.id = c.user_id cross join generate_series(1, u.weeks_to_live) as g(wn);").then(data => {
console.log(data);
}).catch(err => console.log(err))
})