0
router.post('/', (req, res) => {
// req.body = [1,2,3,4,5] (these are player ids)
function createGame() {
return knex.insert({'gameDate': new Date(), 'season_id': 1})
.into('game') // creates new game with new id
.returning('id') // return that new game id
}
.then(game_Id => {
function createPlayerGameRow(game_id, req.body) { // req refer above
req.body.forEach(id => {
return knex.insert({ 'player_id': id, 'game_id': game_id })
.into('player_game')
})
}
})
})
このセクションでは、最初のクエリcreateGame()がゲームテーブルに新しいゲームを作成するクエリを分離する必要があります。これは正常に動作します。Knexクエリで複数の行を挿入する
私は、最初の約束事で別のクエリ(createPlayerGameRow())をチェーンしようとして問題が発生しています。
この関数はidの配列を実行してループしますが、再生1,2,3,4,5がいくつかの統計情報を記録できることを示すために、新しい行を自分のplayer_gameテーブルに挿入しません。
私は遠くに見て、これを理解するのに運がなかった。私はplayer_gameテーブルへの挿入をループすることで何か間違ったことをしているに違いありません。
の配列上にマッピングされた私は、これを確認していないが、それは「}」の後に、次に呼び出すためにOKですか? !?? これを行う正しい方法は、チェーンコールを.returning(id)に追加することです。 –
promise文のようにしてください。それがなければ、ロジックは本質的に非同期です。 – simplyketchup
返却までの呼び出しをチェーンしても問題は解決しないのですか?私はJSの専門家ではなく、私はあなたの答えを理解していないが、私はそれが解決すると思う –