如何用猫鼬在mongodb中保存对象数组?

时间:2020-02-06 18:15:14

标签: javascript node.js mongodb mongoose

我想保存复杂的数据,即对象数组到猫鼬。我已经尝试了几件事,但是无法保存数据。

我如上所述定义了架构,我想保存可以具有任何嵌套级别的对象数组。 架构

const mongoose = require('mongoose);
const PostSchema = new mongoose.Schema({
    post: [{}]
});

let PostModel = mongoose.Model('Post', PostSchema)

数据: enter image description here

这是我用来保存数据

的代码
app.post('/saveData, async (req, res) => {
    const response = await Post.create(req.body);
    res.json({
        data: response
    });
});

app.listen(8008, () => {
    console.log('server running);
});

问题是我无法检索数据。它返回的对象数组等于已保存数组的数量,但其中没有数据。

怎么办?

2 个答案:

答案 0 :(得分:1)

此代码对我有用。

  const PostModel =  require('./Post');    //declare your model
  app.post('/saveData', async (req, res) => {
    const objModel = new PostModel();
    objModel.post = req.body;   //assign the data post array.
    const response = await objModel.save();
    res.json({
      data: response
    });
  });

答案 1 :(得分:0)

您的发布架构看起来很奇怪。 您有一个Posts的集合,然后在posts模式中,有一个posts数组。 这有什么意义呢? 帖子集已经是帖子的“数组”。

// Perhaps you are looking for something like this.
const PostSchema = new mongoose.Schema({
    title: String,
    content: String,
    level: Number,
    footer: String,
    author: ObjectId,// who wrote the post
    comments: [{
       user: ObjectId,
       comment: String
    }],
    ... createdAt, updatedAt etc
});

您的数据结构似乎也不匹配您的架构。 例如 等待Post.create({posts:req.body});