MongoDB没有';t插入嵌套文档
所以我尝试在这里插入一个嵌套文档。books包含多本书,但不插入标题,只插入自动生成的\u id 以下是我插入数据的代码:MongoDB没有';t插入嵌套文档,mongodb,express,mongoose,nested,Mongodb,Express,Mongoose,Nested,所以我尝试在这里插入一个嵌套文档。books包含多本书,但不插入标题,只插入自动生成的\u id 以下是我插入数据的代码: "firstName": "Jay Rhick", "lastName": "Villareal", "country": "Philippines", "citizenship": "Filipino", &quo
"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
因为它是一个嵌套的模式,所以它可能不会返回整个对象,只返回_id。你能在你的收藏中看到带有标题的书吗?如果它在集合中,则需要查看mongoose中的.populate()函数 这里有一个类似的问题:
多亏了asg86260,我解决了我的问题!因此,我已将代码更改为:
书籍:[{
书:req.body.book
}]
到
books:req.body.books
如何使用populate?我正在使用Postman从服务器插入和获取数据您是否有此集合的GET端点?或者你只是在看帖子中返回的对象?我试图插入一个书名,但似乎不起作用,它只显示了上面显示的_id,我还检查了atlas mongodb的数据库,同样的输出,它没有插入一本书,只是自动生成的id谢谢!你给了我解决这个问题的主意!谢谢你UUI将发布答案:)如果你的问题似乎得到了回答,请不要忘记更新它,并将其标记为已解决。