Mongoose & Express: данные POST из поддокумента - PullRequest
1 голос
/ 23 мая 2019

Я новичок в Express / Mongoose и бэкэнд-разработке. Я пытаюсь использовать поддельный документ Mongoose в моей схеме и данные POST из формы в базу данных MLab.

Я успешно отправляю сообщения в базу данных, когда использую только родительскую схему, но при попытке также отправить данные POST из под-документа я получаю неопределенную ошибку. Как правильно POST-данные из вложенного документа?

Вот моя схема:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const bookSchema = new Schema({
  bookTitle: {
    type: String,
    required: true
  },
  author: {
    type: String,
    required: true
  },
  genre: {
    type: String
  }
});

const userSchema = new Schema({
  name: String,
  username: String,
  githubID: String,
  profileUrl: String,
  avatar: String,
  // I've tried this with bookSchema inside array brackets and also 
  //without brackets, neither works
  books: [bookSchema]
});

const User = mongoose.model('user', userSchema);

module.exports = User;

Вот мой маршрут, где я пытаюсь отправить POST в базу данных:

router.post('/', urlencodedParser, (req, res) => {
  console.log(req.body);

  const newUser = new User({
    name: req.body.name,
    username: req.body.username,
    githubID: req.body.githubID,
    profileUrl: req.body.profileUrl,
    avatar: req.body.avatar,
    books: {
      // All of these nested objects in the subdocument are undefined. 
      //How do I properly access the subdocument objects?
      bookTitle: req.body.books.bookTitle,
      author: req.body.books.author,
      genre: req.body.books.genre
    }
  });

  newUser.save()
    .then(data => {
      res.json(data)
    })
    .catch(err => {
      res.send("Error posting to DB")
    });

});

1 Ответ

1 голос
/ 23 мая 2019

Разобрался. У меня не было правильного доступа к значениям с использованием точечной нотации.

books: {
      // All of these nested objects in the subdocument are undefined. 
      //How do I properly access the subdocument objects?
      bookTitle: req.body.books.bookTitle,
      author: req.body.books.author,
      genre: req.body.books.genre
    }

Нет необходимости обращаться к .books внутри объекта books. req.body.books.bookTitle должно быть req.body.bookTitle и так далее. Оставьте этот пост на тот случай, если он кому-нибудь поможет.

...