ошибка возникает при сохранении новых сообщений в базе данных mongodb - PullRequest
0 голосов
/ 26 мая 2020
const userSchema = {
email: String,
password: String,
post:{
    title: String,
    content: String
}}; 

невозможно получить доступ к полю сообщения и сохранить в нем данные, как предположить, что это сделать

const title = req.body.title;
const content = req.body.content;

newPost = new User({
    post.title:title,
    content.content:content
});

таким образом возникает ошибка при сохранении нового сообщения в сообщение obj

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Вы можете сначала объявить объект User, а затем получить доступ к этим вложенным реквизитам, например:

const title = req.body.title;
const content = req.body.content;

let newPost = new User();
newPost.post.title = title;
newPost.post.content = content;

или минимизировать его, например:

let newPost = new User();
newPost.post = { title: title, content: content };

, но как ключ, так и значения здесь такие же, вы также можете использовать сокращение объекта, например:

let newPost = new User();
newPost.post = { title, content };
1 голос
/ 26 мая 2020

Я думаю, вы пытаетесь получить доступ к title и content без объявления объекта post. Таким образом, вы можете объявить объект post, и они присваивают значение каждому атрибуту.

В вашем случае нет объекта content, и вы пытаетесь получить к нему доступ, например, content.content.

Используйте следующий код

  let post = {};

  newPost = new User({
     post.title:title,
     post.content:content
  });

Также хотел бы предложить вам создать отдельную схему Post, поскольку у одного пользователя будет несколько сообщений, поэтому вам не нужно каждый раз создавать пользователя.

Пример

    const postSchema = {
        userId: { type: Schema.Types.ObjectId, ref: 'User' },
        title: String,
        content: String
    }; 

И просто вы можете создать сообщение следующим образом:

    const { title, content } = req.body;
    const userId = req.body.userId;// login user id or which user want to create a post

    newPost = new Post({ title, content});

Надеюсь, это вам поможет.

...