Я отправляю данные 2 раза клиенту, но посылаю вторые данные клиенту, только если выполняется какое-то условие, например: если существует некоторая переменная (из промежуточного программного обеспечения, в моем случае: req.userId, который не всегда ожидается с момента req.userIdдекодируется идентификатор из токена jwt, поэтому, если токен существует, req.userId также существует.
Я проверяю пользователя таким образом, если пользователь прошел проверку подлинности, если у него есть токен, и я отправляю дополнительные данные, в противном случае я должен отправитьданные, которые видны всем), отправьте заголовок клиенту с кодом состояния 200 (я имею в виду, что заголовок не для ошибки) и продолжите выполнение кода, кроме этого, если в операторе есть второй заголовок для отправки также с кодом состояния 200, но если условиеложно, пропустить это условие и просто отправить второй заголовок, который отправляется в каждом случае, и клиентская сторона (реагирует на js) проверяет, существуют ли эти данные, и затем устанавливает их в состояние или делает все, чтобы предотвратить неопределенные переменные, проверка на стороне клиента легка, я ужесделал это, но из-за моего глючного кода я получил неопределенный.
В любом случае, я знал это, и было запланировано, что я получу неопределенное значение без проверки, поэтому проблема не в стороне клиента, а в стороне сервера, и вот проблема: мой код отправляет только заголовок, который находится первым в коде, вот мой код
router.get("/", async (req, res) => {
var data = { foo: "bar", foo1: "bar1" };
if (req.userId) {
const user = await User.findById({ _id: req.userId }, "-password").lean();
res.status(200).send({ name: user.username });
}
return res.status(200).send({ data: JSON.stringify(data) });
});
Таким образом, если я сначала пишу return res.status(200).send({data: JSON.stringify(data)})
, он не отправляет объект данных отправки (ни имя), но когда я аутентифицируюсь и создаю req.userId, он отправляет объект данных (не имя), но если я сначалав состоянии записи он сначала ничего не отправляет, но когда я аутентифицируюсь и создаю req.userId, он посылает имя (не объект данных), я действительно сбит с толку и не знаю, почему это происходит
Вот моя реакциякод, если это имеет значение:
componentDidMount() {
axios
.get("/api/main")
.then(res => res.data)
.then(data => {
this.setState({ name: data.name });
alert(data.data);
})
.catch(error => {
if (error.response) {
console.log(error.response.data.message);
}
});
}
Поскольку я использую componentDidMount, он должен отправлять объект данных при загрузке содержимого страницы
СПАСИБО!