Identify the mistake using the callback function

My middleware was developed to utilize an external code for managing user accounts. When creating a new account, I rely on the Manager's function with the following code snippet:

.post(function(req,res,next){
        UsersManager.createUser(req.body.username,req.body.password,function(err){
            if(err){
                res.json({
                    success: false,
                    message: 'User NOT created',
                });             
            }else{
                res.json({
                    success: true,
                    message: 'User '+req.body.username+' created',
                });
            }
        });
    });

However, I am facing difficulty in capturing errors, such as when the user already exists. Here is the UsersManager.createUser code:

createUser: function(username,password,callback){
        var new_user = new User({
            username: username,
            password: password
        });
        User.findOne({username:username},function(err,user){
            if(!user) new_user.save(callback);
            else throw err;
        });

    }

The error message reads:

Error: Uncaught, unspecified "error" event. (null)

How can I properly handle the final line else throw err so that it can be caught by the callback? What are your thoughts on the code structure for handling user management?

Answer №1

My solution was implemented with this code snippet:

createAccount: function(email, password, callback){
        var new_account = new Account({
            email: email,
            password: password
        });
        Account.findOne({email: email}, function(err, account){
            if(!account) new_account.save(callback);
            else{
                var err = 1;
                callback(err);
            }
        });

    }

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Is there a way to determine if the value of an array has not been defined?

When attempting to access the value of an array that does not exist, an error is thrown stating "variable is not defined." Consider the following example: var arr = new Array(); arr['house']['rooms'] = 2; Using the following check: ...

Having trouble with ui-router: "$injector:modulerr" - it seems an error has occurred

I recently started the tutorial AngularJS Tutorial: Learn to Build Modern Web Apps with Angular and Rails by Thinkster, but encountered a problem. After creating an inline template, I ended up with a blank page and an error message $injector:modulerr with ...

Each time I load the page, it displays differently depending on the browser. I'm struggling to understand the reason

Trying to figure out how to make the navigation bar close when a link is clicked and directed to a section instead of a new page. When on a large screen, I want the nav bar to remain open but automatically close when on a small screen (for example, when th ...

Having difficulty making my directive function in Angular

I'm encountering an issue with my directive not working properly. I suspect that I may have registered it incorrectly, but I can't seem to figure out the mistake. Could it be related to the naming convention? Here's the code snippet in quest ...

Receiving a blank array upon calling res.json() in Node.js script

I'm facing an issue with my code snippet that displays all posts, including the username and display picture of each user. Everything seems to be working fine as the log output is perfect. However, I'm struggling to return this data as a JSON obj ...

How can we refresh an updatePanel on the main page from a popup using ASP.Net?

Looking for assistance, thank you in advance. I have two aspx pages - the first one is the main page with an updatepanel where I call the second page as a popup. I am looking for a way to update the updatepanel on the main page from the popup. Thank you f ...

What are the steps to delete data in angularjs?

I attempted to eliminate the data utilizing indexOf in AngularJS. Unfortunately, the remove function isn't functioning properly. Please guide me on identifying the mistake I may be making. JavaScript: var app = angular.module('myApp', []); ...

A guide to swapping text in a jQuery DOM component

In order to construct HTML from a jQuery ajax response, I prefer not to nest unsightly strings in javascript and avoid using templating scripts like mustache. Instead, I decided to utilize a template HTML with display: none as shown below: <div id="mes ...

Discovering the worth of specific selections in a dropdown menu

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> </head> <body> <select name="states" id="states"> <option value="100">Hawaii</option> <option value="107">Texa ...

JavaScript: What's the best way to update the URL in the address bar without triggering a page refresh?

Similar Question: How can I use JavaScript to update the browser URL without reloading the page? I've observed websites like GMail and GrooveShark altering the URL in the address bar without having to refresh the entire page. Based on my understa ...

The replace function fails to recognize Cyrillic characters when combined with the /b flag

Struggling with a persistent issue, I've noticed that my code works perfectly with Latin characters but fails to recognize Cyrillic characters when using jQuery. $('p').each(function() { var $this = $(this); $this.html($this.text().re ...

A step-by-step guide on automatically removing a Vuetify card within seconds

On my vue card, a success message is displayed and can be dismissed when the user clicks the ok button. I also want the card to disappear automatically after a few seconds, even if the button is not clicked. How can I achieve this? Below is my component co ...

Tips for specifying minimum length in the v-autocomplete component in Vuetify

Within my code, I incorporate the v-autocomplete UI Component. Is there a way to configure it so that it only starts searching after a minimum length of 3 symbols? Typically, the default minimum length is set to 1 symbol, and it shows the no-data-text mes ...

Incorporating jQuery ajax requests into divs seamlessly to avoid any page disruptions

When loading numerous ajax calls on a page, the timing of each call varies, resulting in some content loading before the user reaches the top of the page. This may cause the user to miss viewing certain data unless they scroll back up to the top. Below is ...

What is the best approach for creating a single jQuery click function to manage multiple elements within a slider?

Here's my query: I have a slider on my website where each slider item consists of an image and a Bandcamp iframe link. Below is an example code of one of the slider items: <div class="tapecol col-md-4"> <img class="media-ob ...

JavaScript: Developing an interactive Word Guessing Game

Here's some sample code: let ccdisplay = document.querySelector('.crrDisplay'); let incdisplay = document.querySelector('.incDisplay'); let guess = document.querySelector('#character'); let textForm = document.q ...

Having trouble displaying the API response data on the screen in Next.js

I am currently experiencing an issue with my OCR API that is supposed to return text from a given image. The data is being received on the client side and can be seen in the console. However, for some reason, the element is not updating with the data. Bel ...

Automated Facebook Wall Publishing

I have successfully integrated a feature in my application where users can post status updates, photos, and URLs on their Facebook Like stream. I have also added an option for users to post directly on Facebook by including a checkbox. When the user clicks ...

Creating Bubble Charts using npm highcharts with error code #17

I am attempting to create a bubble chart using Highcharts with the npm version, but I keep encountering error #17. I have tried importing highcharts-more without success... Here are my imports: import $ from "jquery"; import _ from "underscore"; import L ...

Tips for utilizing a button within a hyperlink in a React component:

I am new to react and have been working on the following code: import {NavLink as Link} from 'react-router-dom' return ( <div> {posts.map((actualData, index) => ( <Link to={'/' + actualData.id}> <d ...