Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2019
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. exports.addUser = async function addUser(name, email, password) {
  2.   const client = await db.loadUsersCollection();
  3.   const validatedName = validateAuth.validateName(name);
  4.   const validatedEmail = validateAuth.validateEmail(email);
  5.   const validatedPassword = validateAuth.validatePassword(password);
  6.   const session = client.startSession();
  7.   session.startTransaction();
  8.   const userCollection = client.db('recruitment').collection('recruitment');
  9.   try{
  10.     const opts = { session, returnOriginal: false, new: true,
  11.       writeConcern: { w: "majority", wtimeout: 5000 } };
  12.     const result = await userCollection.insertOne({ name: validatedName, email: validatedEmail, password: validatedPassword, role: 'applicant' }, opts);
  13.     await session.commitTransaction().then((data) => console.log("Success"));
  14.     session.endSession();
  15.     return result.ops[0]._id;
  16.   }catch(error){
  17.     await session.abortTransaction().then((data) => {
  18.       console.log("Transaction error: " + data);
  19.     }).catch((error) => {
  20.       console.log("Transaction error: " + error);
  21.     });
  22.     console.log("fail");
  23.     session.endSession();
  24.     if(error.code == 11000){
  25.       console.log("Duplicate user: " + error);
  26.     } else {
  27.       console.log("Error: "+ error);
  28.     }
  29.   }
  30. }
  31.  
  32. ##DB##
  33. exports.loadUsersCollection = async function loadUsersCollection() {
  34.   const fn = async function () {
  35.     const client = await mongodb.MongoClient.connect(' mongodb://IV1201:IV1201@recruitment-shard-00-00-gxbqo.mongodb.net:27017,recruitment-shard-00-01-gxbqo.mongodb.net:27017,recruitment-shard-00-02-gxbqo.mongodb.net:27017/test?ssl=true&replicaSet=recruitment-shard-0&authSource=admin&retryWrites=true', {
  36.       useNewUrlParser: true,
  37.       replicaSet: 'recruitment-shard-0' ,
  38.       readConcern: { level: "majority" }
  39.     });
  40.     return client;
  41.   }
  42.   return await retry(fn, MAX_RETRIES, MONGO_NETWORK_ERROR, ERROR_MESSAGE);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement