2016-09-19 3 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) 
     })      
    } 

私は、これは間違っていると私のオブジェクトとチェーンをループするより良い方法があるかどう思っていたと仮定発見は創造する。現在は最初のオブジェクトを通過しますが、それ以上は追加しません。私はBluebirdの使用を検討してきましたが、私は約束を使用することにあまり慣れていません。思考?

+0

あなたの「問題」は何ですか? –

+0

@DanielB "現在、最初のオブジェクトを通過しますが、それ以上は追加しません"。私はまた、これがそれを処理する方法であってはならず、おそらく約束をいくらか使用する必要があると考えています。私は確信していません –

+0

あなたのスプレッド関数は 'user'という名前の最初のパラメータを受け取るが、定義されていない' guild'インスタンスの関数を呼び出すので、あなたのコードは 'guildが定義されていない'同じ名前を持つスプレッド関数の最初のパラメータを 'guild'に変更してください。 –

答えて

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

真。あなたが配列を持っているという質問で、それは私の答えのタイプミスでした。一定 –

関連する問題