sql >> データベース >  >> NoSQL >> MongoDB

ループ内のMongoDBへの保存

    これは、save 実際には非同期であるI/O操作です。さて、for ループは実際には同期されています。次のように考えてください。JSエンジンは、表示された各行をシリアルに実行します。これらの行がスタック上に次々に保持されていると仮定します。 saveに関しては、 、それは別のスタックに保持され(I / O操作であるため、時間がかかるため)、残りのループを続行します。エンジンは、古いスタックのすべての行を完了した後にのみ、この新しいスタックをチェックすることがわかりました。したがって、変数catsの値 配列の最後の項目になります。したがって、最後の値のみが保存されます。

    この悲劇と戦うために、複数の方法を使用できます:

    1. 閉鎖-続きを読む
    2. 約束-続きを読む 。 甘いライブラリ があります これにより、mongoドライバーの操作が簡単になります。
    3. ジェネレーターなど-続きを読む 。プライムタイムの準備はまだできていません。

    #2に関する注意-私はプロジェクトの寄稿者ではありませんが、作者と協力しています。私はこのライブラリを1年以上使用していますが、高速ですばらしいです!



    1. エラー500が発生するのはなぜですか。申し訳ありませんが、アプリをHerokuにプッシュすると問題が発生しました。

    2. Redisは順不同で挿入しますか、それとも奇妙に並べ替えますか?

    3. サービスロケーターパターンで使用した場合のMongoDBのDateTimeの保存方法の処理

    4. golangとmongodbでidで検索する方法