1 - Цель
Я пытаюсь достичь основной панели инструментов для отображения профиля вошедшего в систему пользователя и других профилей, а также сообщений. Подобно панели инструментов Linkedin после входа в систему. Однако панель инструментов недоступна, пока пользователь не создаст профиль.
2 - Попытка
На данный момент у меня есть только:
Получить весь маршрутизатор
router.get("/", async (req, res) => {
try {
const allProfiles = await Profile.find().populate("user", [
"name",
"avatar",
]);
res.json(allProfiles);
} catch (err) {
console.error(err.message);
res.status(500).send("Server not working");
}
});
и маршрутизатор профиля пользователя
router.get("/me", auth, async (req, res) => {
try {
//see if there is a profile
const profile = await Profile.findOne({
user: req.user.id,
}).populate("user", ["name", "avatar"]);
if (!profile) {
return res
.status(400)
.json({ msg: "There is no profile for this user " });
}
//get profile data
res.json(profile);
} catch (err) {
console.error(err.message);
res.status(500).send("Server error");
}
});
Теоретически моя идея состоит в том, чтобы создать комбинацию между двумя маршрутизаторами, однако я не знаю как это сделать.
router.get("/all", async (req, res) => {
try {
//see if there is a profile
const profile = await Profile.findOne({
user: req.user.id,
}).populate("user", ["name", "avatar"]);
if (!profile) {
return res
.status(400)
.json({ msg: "There is no profile for this user " });
}
//if there is a profile show other profiles
const allProfiles = await Profile.find().populate("user", [
"name",
"avatar",
]);
//How to combine the two ???
//profile.push(allProfiles);
res.json(profile);
} catch (err) {
console.error(err.message);
res.status(500).send("Server not working");
}
});
3 - Проблемы
Я протестировал панель управления, и она отлично работает, если я подключаюсь только к пользовательскому API «/ me». Однако он не поддерживает другие профили на той же странице. Отсюда и моя мысль о создании комбинированного маршрутизатора.
Компонент приборной панели -
const Dashboard = ({
getProfile,
auth: { user },
profile: { profile, loading },
}) => {
useEffect(() => {
getProfile();
}, [getProfile]);
return (
<Fragment>
{loading && profile === null ? (
<Spinner />
) : (
<Fragment>
{profile !== null ? (
<ProfileDashboard profile={profile} />
) : (
<NoProfile userName={user && user.name} />
)}
</Fragment>
)}
</Fragment>
);
};
Извините за длинный пост, надеюсь, это имеет смысл. Я ценю любые предложения. Спасибо