【问题标题】:Looping through objects and adding them to Sequelize db循环遍历对象并将它们添加到 Sequelize db
【发布时间】:2019-11-20 12:03:59
【问题描述】:

我有一组对象,我想通过 Sequelize 将它们放入 SQL 中,但我遇到了问题。

[ 
  { owner: false,
    id: '2342365',
    name: 'awrAPI' },
  { owner: false,
    id: '5675689699',
    name: 'TgatAPI' },
  { owner: true,
    id: '57456767',
    name: 'ytasyAPI' }
[

目前我设置它的方式是通过一个简单的 for in。

    for( var key in guilds ) {
        Guild
        .findOrCreate({where: {primid: guilds[key].id}, defaults: {
            primid: guilds[key].id,
            name: guilds[key].name,
            owner: guilds[key].icon
        }})
        .spread(function(guild, created) {
            console.log(guild.get({
            plain: true
            }))
            console.log(created)
        })                      
    }

我认为这是错误的,并且想知道是否有更好的方法来循环我的对象并链接 findorcreates。目前它通过第一个对象,但随后不再添加。我一直在研究使用 Bluebird,但我对使用 Promise 不太熟悉。想法?

【问题讨论】:

  • 你的“问题”是什么?
  • @DanielB “目前它通过第一个对象,但随后不再添加”。我还认为这不应该是处理它的方法,而且很可能需要使用一些承诺。我只是不确定
  • 我想,你的代码抛出'guild is not defined'错误,因为你的传播函数接收到名为user的第一个参数,然后调用guild未定义实例的函数,他们应该有相同的名字。尝试将传播函数的第一个参数更改为“公会”
  • @TilovYrys 实际上这只是一个错字。在我运行的实际代码中,它被命名为 guild。

标签: node.js promise sequelize.js


【解决方案1】:
var myData = [ 
  { 
    owner: false,
    id: '2342365',
    name: 'awrAPI' 
  },
  { 
    owner: false,
    id: '5675689699',
    name: 'TgatAPI'
  },
  { 
    owner: true,
    id: '57456767',
    name: 'ytasyAPI'
  }
];

Promise.all(myData.map(function(value) {
  // Do your thing
  return Guild.findOrCreate...
})).then(function() {
  // All is resolved do your next thing
})

【讨论】:

  • 请原谅我的无知,但我不像我想的那样熟悉地图。我一直认为 .map 只适用于数组而不是对象。
  • 是的。关于你有一个数组的问题,这是我回答的一个错字。固定
【解决方案2】:

另一种方法是利用 squelize 的 bulkCreate 模型方法来插入多条记录。 link to sequelize's bulkCreate docs

在这里快速sn-p:

 const dataForInsertion = [ 
    {
      username:"daniel",
      currentORM:"Sequelize"
    },
    {
      username:"lekan",
      currentORM:"Mongoose"
    },
 ]

 Guild.bulkCreate(dataForInsertion)
     .then(()=>{})
     .catch(()=>{})

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 2021-10-04
    • 2021-06-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多