[TIL]トラブルシューティング、実戦プロジェクト計画、テストコード、MongoDB
7707 ワード
考えてみろ
質問する
入室人数を集計する場合は、socketサーバ上の人数、client上の人数、DB上の人数を同期します.
プロセス
クライアントが部屋へのアクセスとAPIのチェックアウトを要求するたびに、データベースは人員数を更新します.この場合、同期が壊れる可能性がある場合があります.
解決する
クライアントのAPIリクエストではなく、socketサーバで発生したイベントに基づいて、データベースにアクセスして人数を更新する方法で変更します.このようにして、socketに接続する場合と接続を切断する場合とで、ユーザ数を同期することができる.
実戦種目がこれから3週間行われることを考えてみましょう。
秘密の部屋、共有リンク、招待機能
リンクにアクセスするにはログインが必要です
切り替えて部屋に入る
無限スクロール
コードテスト後の自動配置機能(CI/CD補充)
ビデオ通話サービスの不安定性の解決
Peer.けんさ
Googleでユーザーを統計
Googleフォームからユーザーフィードバックを取得
ビデオとタイマーの機能強化
複数機器対応(ディスプレイサイズ、iPad)
テストコードの作成
it('내가 일주일에 몇 일 운동했는지 알 수 있다.', async () => {
// 두 날짜 사이의 랜덤 날짜 생성 함수
function randomDate(start, end) {
return new Date(
start.getTime() +
Math.random() * (end.getTime() - start.getTime())
)
}
const weekStart = moment().startOf('isoWeek').toDate()
// 5개의 랜덤 데이터
const recordsDays = []
for (let i = 0; i < 5; i++) {
const record = await WorkOutTime.create({
userId,
createdAt: randomDate(weekStart, new Date()),
})
recordsDays.push(record.createdAt.getDay())
}
const countPerWeek = new Set(recordsDays).size
const response = await request(app)
.get('/myinfo/statistics')
.set('Authorization', 'Bearer ' + token)
await WorkOutTime.deleteMany({ userId })
expect(response.body.countPerWeek === countPerWeek).equal(true)
})
MongoDBの参照
https://velog.io/@fancyer/MongoDB%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
Reference
この問題について([TIL]トラブルシューティング、実戦プロジェクト計画、テストコード、MongoDB), 我々は、より多くの情報をここで見つけました https://velog.io/@fancyer/TIL-troubleshooting-실전-프로젝트-계획-테스트코드-MongoDBテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol