2016-09-19 138 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

是的。在這個問題上你有一個陣列,這是我的答案錯別字。固定 –