Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- exports.addUser = async function addUser(name, email, password) {
- const client = await db.loadUsersCollection();
- const validatedName = validateAuth.validateName(name);
- const validatedEmail = validateAuth.validateEmail(email);
- const validatedPassword = validateAuth.validatePassword(password);
- const session = client.startSession();
- session.startTransaction();
- const userCollection = client.db('recruitment').collection('recruitment');
- try{
- const opts = { session, returnOriginal: false, new: true,
- writeConcern: { w: "majority", wtimeout: 5000 } };
- const result = await userCollection.insertOne({ name: validatedName, email: validatedEmail, password: validatedPassword, role: 'applicant' }, opts);
- await session.commitTransaction().then((data) => console.log("Success"));
- session.endSession();
- return result.ops[0]._id;
- }catch(error){
- await session.abortTransaction().then((data) => {
- console.log("Transaction error: " + data);
- }).catch((error) => {
- console.log("Transaction error: " + error);
- });
- console.log("fail");
- session.endSession();
- if(error.code == 11000){
- console.log("Duplicate user: " + error);
- } else {
- console.log("Error: "+ error);
- }
- }
- }
- ##DB##
- exports.loadUsersCollection = async function loadUsersCollection() {
- const fn = async function () {
- 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', {
- useNewUrlParser: true,
- replicaSet: 'recruitment-shard-0' ,
- readConcern: { level: "majority" }
- });
- return client;
- }
- return await retry(fn, MAX_RETRIES, MONGO_NETWORK_ERROR, ERROR_MESSAGE);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement