mongoose 使用NodeJ将相同记录多次插入Mongo数据库

iszxjhcz  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(187)

我想实现的功能,在前端的用户写多少职位,他想插入到数据库..他可以写1,5,10,15,..多达50个相同的职位。
然后,这些帖子在数据库中是相同的,只是这个手动生成的_id不同。
起初我以为这件事可以这样做:

exports.addPost = async (req: any, res: any) => {
  try {
    const newPost = new Post({
      title: req.body.title,
      description: req.body.description,
      author: req.body.author,
    });
    for (let i: number = 0; i < 5; i++) {
      await newPost .save();
    }
    res.status(201).json(newContainer);
  } catch (err) {
    res.status(400).json(err);
  }
};

发布架构:

const PostSchema = new mongoose.Schema({
  title: { type: String, required: true },
  description: { type: String, required: true },
  author: {
    type: Schema.Authors.ObjectId,
    ref: "Authors",
    required: true,
  },
});

module.exports = mongoose.model("Posts", PostSchema);

但我不确定,如果这真的是要走的路..什么是一些好的做法,这(假设数字5在for循环将进入req.body..所以从用户输入。
谢谢

0md85ypi

0md85ypi1#

您可以只使用下列程式码:

try {
    await Post.create(
      new Array(5).fill(true).map((_) => ({
        title: req.body.title,
        description: req.body.description,
        author: req.body.author,
      }))
    );
    res.status(201).json(newContainer);
  } catch (err) {
    res.status(400).json(err);
  }

model.create不接受向其传递一个(新)文档数组。通过将一个大小为5(或取决于用户输入)的新数组Map到您的自定义文档并将其传递给create函数,将导致创建多个文档。一个巨大的好处是,您只需执行一个数据库调用(并等待它)。

相关问题