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 })();