Node.jsを使用してSQL Serverテーブルにデータを送信しています。コードにはforループがあり、これは関数を呼び出し、insert文を実行します(最終的にストアドプロシージャになります)。 foorループは一連のオブジェクトを日付順に実行します。ほとんどの場合、insert文は正しい順序で終了しますが、エントリの一部が間違っています。Javascriptで正しい順序でデータを入力する方法は?
データベース内の日付の順序が、私がそれらを(時系列に)呼び出すのと同じ順序であることを保証する方法はありますか?私はT-SQLでSORT
について知っていますが、私はプログラムが正しい順序でそれを行うべきだと思います。スレッドスリープとタイマーはできるだけ避けるように常に聞いてきましたので、私はsetTimeout
のアイデアは好きではありません。おそらく、イベントハンドリングの別の方法がありますか?
下記のコード例。 jsonArray
の要素は、日付キーと他のいくつかの数字を持つ単一のオブジェクトです。 SQL Serverテーブルには、プライマリキーの整数が自動インクリメントされています。日付を日付順に並べ替えることで、プライマリキーと日付を順番に並べ替えることができます。
また、SQL操作用にMSSQL
インポートを使用しています。
// Main class
for (let j = 0; j < jsonArray.length; j++) {
let myObj = jsonArray[j]
WriteToDB.myWriteFunction(myObj)
}
// Different class
const sql = require('mssql')
let request = new sql.Request()
let query = (...)
function myWriteFunction() {
request.query(query) // Just the actual insert statement, no issue here
request.on('error', function (err) {
console.log('REQ ERROR')
console.dir(err)
})
// These dates are out of order, due to when the done event is triggered
request.on('done', function() {
console.log('QUERY RAN FOR ' + e1)
})
}
データベースのレコードの順序が重要なのはなぜですか?主キーはソートメカニズムとしてではなく、レコードの一意の識別子として意図されています。 – McHat
OCD以外に理由はないと思います。私はこれを引き起こしている何らかのマルチスレッドを想定しています。私はそれが渡された順序ですべてのデータを入力するC#で同様のプログラムを持っていた。私はそれに合ってみたいと思っていました。また、学ぶことを試みる。 – AmishJohn81