2017-01-25 4 views
0

これは非常に奇妙です。コードは小切手のちょっと500行ですが、それは、私はそれが間違ったインクリメントNodejsとMySQLはバルク挿入用のループをループしています

var data = API.data 
_.forEach(data, function (member, index, array) { 
    var todoArray = [] 
    var todoNum = 0 
    _.forEach(member.todos, function (spell, index, array) { 
      .. bla bla bla 
      todoArray.push([ 
       ...stuff, 
       todoNum 
      ]) 
      todoNum++ 
    }) 
    i.connection.query('INSERT INTO `static_todos` (`key`, `name`, `description`..) VALUES ? ON DUPLICATE KEY UPDATE `name` = VALUES(`name`)...;', [todoArray], function (err, result, fields) { 
      // Throw stuff 
    }) 
}) 

を重要ではないことを、lodash使用しています。この

にまとめしかし、私はデータベースに行くとき、行も同様に、スクランブルされていますtodoNumとします。私は何が起こっているのか分かりません..

編集; 2番目のforEachtodoArrayと表示された後にログを印刷すると、正しい番号と正しい順序が表示されます。

+0

あなたのスキーマはどのように見えますか? MySQLは、あなたが 'ORDER BY'節を持っていない限り、特定の順序で何かを返す義務はありません。 – tadman

+0

ああ神様...ごめんなさい、私はばかだ、このためのボタンがある。ループ内にクエリを置くと、その前に一括して挿入された数字が大丈夫だった。質問を削除する必要がありますか? – dev

+0

こんにちは、問題を解決するには残念です。質問をいつでも削除することができます。または、問題が解決した場合はその解決策を説明する回答を提供することができます。 – tadman

答えて

0

私はapplicationにこの種の問題がありました。

からのご注文をお待ちしておりません。特定の注文が必要な場合は、必要な注文を得るためにソートできる整数値を追加します。

は、だから私は

は関係で何のためにありませんが、私の場合はscreenshotを確認し、手動注文の余分な列を使用していることを決議している(つまり、中の人は通常、誤って「テーブル」と呼んでいるもの)の関係があるため、リストまたは配列ではなく、設定します。

+0

これは一括挿入後の画面上のものと同じですが、num(最初の列は文字列の主キーです)で並べ替えるとは思っていませんでしたが、まだ間違っていると思っていました。私は本当にゴム製のアヒルが必要とstackoverflowのこれを最善の悩みを停止... – dev

+0

あなたがフェッチするときに、列名ASCで順序をフェッチし、それはあなたのデータを順番に提供します – Deep

関連する問題