我目前正在使用MongoDB和NodeJS构建API,我有以下代码块来执行POST请求:
// '/v1/restaurant/add' - Create
api.post('/add', (req, res) => {
let newRestaurant = new Restaurant();
newRestaurant.name = req.body.name;
newRestaurant.save(err => {
if (err) {
res.send(err);
}
res.json({ message: 'Restaurant saved successfully' });
});
});
我想做的是进行批量POST(即一次将多个文档/记录插入我的MongoDB)。如何修改我的代码来实现这一目标?
我道歉,但我是JavaScript / NodeJS的新手。
答案 0 :(得分:2)
使用Mongoose有两种方法。
Model.create()
- 它接受要插入数据库的对象数组,并对数据库执行与要插入的项目数一样多的查询。如果您想要插入大量记录,这将是性能影响,但您可以获得Mongoose为每个记录调用save()
方法的好处,这意味着您的pre
和post
中间件功能将被触发。您可以详细了解方法here。
Model.insertMany()
- 它还接受要插入的对象数组,但是在单个数据库操作中执行此操作。您获得了更好的性能,但交易的是save()
函数不会为您要插入的任何项目运行(验证仍将在提交查询之前运行)。您可以详细了解insertMany()
here。
如果我必须一次插入少于50个项目并且我的模型很复杂且附加了create()
个中间件功能,我个人会使用pre/post-save
。
如果我的模型不复杂,我会使用insertMany()
我必须定期插入超过50个项目。