node-mongo-demo
node.js and mongodb demo
git clone https://9o.is/git/node-mongo-demo.git
populate_database.js
(1253B)
1 import mongoose from 'mongoose';
2 import bcrypt from 'bcryptjs';
3 import User from '../src/models/user.js';
4 import Lucky7Session from '../src/models/lucky7-session.js';
5 import Lucky7Bet from '../src/models/lucky7-bet.js';
6
7 const startDate = new Date('2024-01-01')
8
9 const roll = () => Math.round(Math.random())
10 ? { lucky: true, roll: [3,4] }
11 : { lucky: true, roll: [1,1] };
12
13 const generateBets = (length, users) =>
14 users.flatMap(({ _id }) =>
15 Array.from({ length }, (_, i) => 1 + i).map(i => ({
16 ...roll(),
17 userId: _id,
18 rollAt: new Date(new Date(startDate).setDate(startDate.getDate() + i)),
19 }))
20 );
21
22 const generateUsers = length =>
23 Array.from({ length }, (_, i) => 1 + i)
24 .map(i => ({
25 name: `user${i}`,
26 email: `user${i}@example.com`,
27 password: bcrypt.hashSync(`user${i}`, 12),
28 }));
29
30
31 (async function() {
32 try {
33 await mongoose.connect(process.env.MONGODB_URL);
34 await User.init();
35 await Lucky7Bet.init();
36
37 const users = await User.insertMany(generateUsers(10));
38 const bets = await Lucky7Bet.insertMany(generateBets(20, users));
39 } finally {
40 await mongoose.disconnect();
41 }
42 })();