如何使用Node.js和Sequelize插入包含多个对象的数组
批量插入数组数据的实现方案
你可以通过以下两种方式完成批量插入操作,同时注意排查常见错误:
常见错误排查
- 确认
BooksDetails是正确引入的Mongoose模型,模型定义的字段名和你数组里的author、BookName完全匹配(字段大小写敏感) - 确认
await代码写在async函数内部,旧版Node.js不支持顶层直接使用await - 确认数据库连接已正常建立,没有权限不足、连接超时的问题
方案1:使用insertMany(推荐批量场景使用)
insertMany是Mongoose专门为批量插入设计的API,性能更优,写法如下:
let Bookarray = [ {author:"john matt", BookName:"Beauty of Nature"}, {author:"Mick Foley", BookName:"Have A Nice Day"}, {author:"Kevin Sullivan.", BookName:"WWE 50"}, {author:"Brian Shields And Dean Miller", BookName:"35 Years Of Wrestlemania"}, {author:"Mick Foley", BookName:"Foley Is Good"}, ] let InsertObj = await BooksDetails.insertMany(Bookarray);
方案2:调整create方法的写法
如果要继续使用create方法,需要确保Mongoose版本在v5.0以上,同时可以增加错误捕获定位问题:
async function insertBooks() { try { let Bookarray = [ {author:"john matt", BookName:"Beauty of Nature"}, {author:"Mick Foley", BookName:"Have A Nice Day"}, {author:"Kevin Sullivan.", BookName:"WWE 50"}, {author:"Brian Shields And Dean Miller", BookName:"35 Years Of Wrestlemania"}, {author:"Mick Foley", BookName:"Foley Is Good"}, ] let InsertObj = await BooksDetails.create(Bookarray); console.log('插入成功', InsertObj) } catch (err) { // 打印错误即可定位具体问题,比如字段校验失败、数据库连接异常等 console.error('插入出错', err) } } insertBooks()
内容的提问来源于stack exchange,提问作者user17149107
相关产品推荐
相关产品推荐

