2016-09-19 86 views
0

我有一个对象数组,我喜欢通过Sequelize将其放入SQL中,并且遇到问题。循环遍历对象并将它们添加到Sequelize db

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

目前,我有它设置方式是通过一个简单的英寸

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。目前它通过第一个对象,但不会再添加。我一直在研究使用蓝鸟,但我不太熟悉使用承诺。思考?

+0

你的“问题”是什么? –

+0

@DanielB“目前它经历了第一个对象,但是不再添加任何东西”。我还假设这不应该是处理它的方式,而且很可能需要使用承诺。我只是不确定 –

+0

我想,你的代码会抛出'公会未定义'的错误,因为你的传播函数接收到名为'user'的第一个参数,但是没有定义'公会'实例的调用函数,他们应该有相同的名字。尝试将传播函数的第一个参数更改为'公会' –

回答

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 
}) 
+0

请原谅我的无知,但我不像地图那么熟悉。我总是认为.map只适用于数组而不是对象。 –

+0

是的。在这个问题上你有一个阵列,这是我的答案错别字。固定 –