Я создаю свое первое приложение MERN, и я столкнулся с этой проблемой: у меня есть сообщения, содержащие идентификатор пользователя:
{
"reward": {
...
},
"_id": "5eb2d90d7d56c415cc4d5f97",
"user": "5eabbb85b8814723fcee0f01",
"text": "Body text hihi hahha",
"createdAt": "2020-05-06T15:34:37.439Z",
"__v": 0
}
Мне удалось автоматически добавить идентификатор пользователя в пост при создании в пост-контроллере. Теперь проблема в том, что я не знаю, где и как мне указать sh идентификатор созданного сообщения в массиве сообщений в пользовательской модели. Вот что такое модель User:
username: {
type: String,
required: [true, "Username is required"],
unique: true,
trim: true,
minlength: 3,
maxlength: 15,
},
email: {
type: String,
required: [true, "Email is required"],
unique: true,
},
role: {
type: String,
enum: ["user"],
default: "user",
},
cards: [
{
type: mongoose.Schema.ObjectId,
ref: "Card"
},
],
И прямо там, где находятся «карточки», я хотел бы иметь идентификаторы сообщений, которые содержат идентификатор пользователя в поле пользователя. Это модель Post:
user: String,
text: {
type: String,
},
reward: {
...
},
user: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: true
},
Это контроллер для сохранения сообщения в базе данных:
exports.addCard = asyncHandler(async (req, res, next) => {
//Add user to req.body
req.body.user = req.user.id;
const card = await Card.create(req.body);
res.status(201).json({
success: true,
message: 'Card created',
data: card
});
});
Я предполагаю, что это должно произойти при создании сообщения, что-то вроде нажимая этот идентификатор сообщения в массив сообщений в пользовательском модальном окне текущего вошедшего в систему пользователя? Как это можно правильно заархивировать?