【问题标题】:MongoDB doesn't insert nested documentMongoDB 不插入嵌套文档
【发布时间】:2021-03-19 01:32:16
【问题描述】:

所以我试图在这里插入一个嵌套文档。书籍包含多本书,但它不插入标题,只插入自动生成的_id。

这是我插入数据的代码:

"firstName": "Jay Rhick",
"lastName": "Villareal",
"country": "Philippines",
"citizenship": "Filipino",
"books": [{
    "book": "Harry Pota"
}]

这是输出:

{
"_id": "6053fc2f33325b35305ee764",
"firstName": "Jay Rhick",
"lastName": "Villareal",
"country": "Philippines",
"citizenship": "Filipino",
"books": [
    {
        "_id": "6053fc2f33325b35305ee765"
    }
],
"__v": 0

这是我的架构:

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)

这是我的图书架构

const mongoose = require('mongoose')

const BookSchema = mongoose.Schema({
     book: String
})

module.exports = mongoose.model('BookSchema', BookSchema)

这是我的特快路线

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 = router

【问题讨论】:

  • 如果您的问题似乎已经得到解答,请不要忘记更新它,并将其标记为已解决。

标签: mongodb express mongoose nested


【解决方案1】:

由于它是一个嵌套模式,它可能不会返回整个对象,而只是返回 _id。你能看到你收藏中的书名吗?如果它在集合中,您需要查看 mongoose 中的 .populate() 函数。

这是一个类似的 stackoverflow 问题: Populate nested array in mongoose

【讨论】:

  • 如何使用填充?我使用 Postman 从服务器插入和获取数据
  • 你有这个集合的 GET 端点吗?还是您只是查看 POST 返回的对象?
  • 我试图插入书名,但它似乎不起作用,它只显示如上所示的 _id,我还检查了 atlas mongodb 的数据库,相同的输出,它没有插入一本书,只有自动生成的 id
  • 非常感谢!你给了我解决这个问题的想法!谢谢你哦
  • 我会发布答案:)
【解决方案2】:

感谢 asg86260,我解决了我的问题!所以我改变了我的代码:

  books: [{
    book: req.body.book
  }]

books: req.body.books

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 2012-08-29
    • 2020-03-27
    • 2021-08-28
    • 2018-03-09
    • 2019-02-27
    • 2016-07-01
    • 2016-08-04
    相关资源
    最近更新 更多