#javascript #node.js #mongodb #express #mongoose
#javascript #node.js #mongodb #экспресс #мангуст
Вопрос:
Вот моя модель профиля,
const ProfileSchema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
},
company: String,
website: String,
location: String,
status: {
type: String,
required: true,
},
skills: {
type: [String],
required: true,
},
bio: String,
githubusername: String,
experience: [
{
title: {
type: String,
required: true,
},
company: {
type: String,
required: true,
},
location: String,
from: {
type: Date,
required: true,
},
to: Date,
current: {
type: Boolean,
default: false,
},
description: String,
},
],
education: [
{
school: {
type: String,
required: true,
},
degree: {
type: String,
required: true,
},
fieldofstudy: {
type: String,
required: true,
},
from: {
type: Date,
required: true,
},
to: Date,
current: {
type: Boolean,
default: false,
},
description: String,
},
],
social: {
youtube: {
type: String,
},
twitter: {
type: String,
},
facebook: {
type: String,
},
linkedin: {
type: String,
},
instagram: {
type: String,
},
},
date: {
type: Date,
default: Date.now,
},
posts: [],
});
И вот как я добавляю новое сообщение,
router.post(
"/",
[auth, [check("text", "Text is required").not().isEmpty()]],
async (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
try {
const user = await User.findById(req.user.id).select("-password");
let profile = await Profile.findOne({ user: req.user.id });
if (profile) {
const newPost = new Post({
text: req.body.text,
name: user.name,
avatar: user.avatar,
user: req.user.id,
});
const post = await newPost.save();
profile.posts.unshift(post);
res.json(post);
}
} catch (err) {
console.error(err.message);
res.status(500).json({ errors: [{ msg: "Server Error" }] });
}
}
);
Большинство из них работают без каких-либо проблем, я могу добавить новое сообщение без каких-либо ошибок, но сообщение не добавляется в массив сообщений в моих профилях. Конечный результат, который я хочу, — вести учет сообщений пользователя, чтобы я мог показывать их по отдельности в его профиле. Почему это не работает? Пожалуйста, помогите мне! Я новичок в веб-разработке, и я так смущен этим. Заранее спасибо.
Комментарии:
1. вы еще не сохранили профиль
2. Нет, я имею в виду, если у меня есть существующая учетная запись, к которой я могу получить доступ.
3. Я нашел свою ошибку, большое вам спасибо. Ошибка новичка, лол.
Ответ №1:
из вашего вопроса я понял, что вы хотите добавить сообщение в схему профиля.
const post = await newPost.save();
profile.posts.unshift(post);
await profile.save();
res.json(post);
Вам тоже нужно вызвать save, вы это пропустили. Теперь публикация будет помещена в коллекцию профилей в поле сообщения.
Ответ №2:
Первый шаг — проверить ваше промежуточное ПО аутентификации, если вы получаете параметры токена, второй — проверить, действителен ли этот токен. последнее — проверить вашу логику «router.post».
Комментарии:
1. Я обнаружил проблемы, пока я сохраняю сообщение, я фактически не сохраняю обновленный профиль. Спасибо за вашу помощь!