Así que estoy tratando de insertar un documento anidado aquí. books contiene varios libros pero no inserta un título, solo _id generado automáticamente.
aquí está mi código insertando un dato:
"firstName": "Jay Rhick", "lastName": "Villareal", "country": "Philippines", "citizenship": "Filipino", "books": [{ "book": "Harry Pota" }]y aquí está la salida:
{ "_id": "6053fc2f33325b35305ee764", "firstName": "Jay Rhick", "lastName": "Villareal", "country": "Philippines", "citizenship": "Filipino", "books": [ { "_id": "6053fc2f33325b35305ee765" } ], "__v": 0Aquí está mi esquema:
const mongoose = require('mongoose') const BookSchema = require('./BookSchema').schema const PostSchema = mongoose.Schema({ firstName: String, lastName: String, citizenship: String, country: String, books: [BookSchema] }) module.exports = mongoose.model('PostSchema', PostSchema)aquí está el esquema de mi libro
const mongoose = require('mongoose') const BookSchema = mongoose.Schema({ book: String }) module.exports = mongoose.model('BookSchema', BookSchema)y aquí están mis rutas expresas
const express = require('express') const router = express.Router() const Post = require('../models/Post') router.post('/', async (req, res) => { const post = new Post({ firstName: req.body.firstName, lastName: req.body.lastName, country: req.body.country, citizenship: req.body.citizenship, books: [{ book: req.body.book }] }) try{ const savedPost = await post.save() res.json(savedPost) }catch(err){ res.json({ message: err }) } }) module.exports = routerDado que es un esquema anidado, es posible que no devuelva el objeto completo, solo el _id. ¿Puedes ver el libro con el título en tu colección? Si está en la colección, querrá echar un vistazo a la función .populate() en mongoose.
aquí hay una pregunta similar de stackoverflow: Rellenar matriz anidada en mangosta
¡Resolví mi problema gracias a asg86260! Así que he cambiado mi código de:
books: [{ book: req.body.book }] a los books: req.body.books